Transact-SQL 語法規則 Transact-SQL 引用中的語法關係圖使用下列規則。 大寫 : Transact-SQL 關鍵字。 斜體 : Transact-SQL 語法中用戶提供的參數。 | : 分隔括弧或大括弧內的語法項目。只能選擇一個項目。 [ ] : 可選語法項目。不必鍵入方括弧 ...
Transact-SQL 語法規則
Transact-SQL 引用中的語法關係圖使用下列規則。
大寫 : Transact-SQL 關鍵字。
斜體 : Transact-SQL 語法中用戶提供的參數。
| : 分隔括弧或大括弧內的語法項目。只能選擇一個項目。
[ ] : 可選語法項目。不必鍵入方括弧。
{ } : 必選語法項。不要鍵入大括弧。
[,...n ] : 表示前面的項可重覆 n 次。每一項由逗號分隔。
[ ...n ] 表示前面的項可重覆 n 次。每一項由空格分隔。
加粗 資料庫名、表名、列名、索引名、存儲過程、實用工具、數據類型名以及必須按所顯示的原樣鍵入的文本。
BACKUP DATABASE [demoData] TO DISK=N'D:\Backup\demoData.bak' WITH NOFORMAT, NOINIT, NAME = N'demoData-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
< backup_device > ::= --備份設備定義
{
{ logical_backup_device_name | @logical_backup_device_name_var }
|
{ DISK|TAPE } ={ 'physical_backup_device_name' | @physical_backup_device_name_var } -- 磁碟或者磁帶上備份 DISK 或者 TAPE需要指定完整路徑名
} < file_or_filegroup > ::= --備份文件或文件組定義
{
FILE = { logical_file_name | @logical_file_name_var } --指定包含在資料庫備份中的文件或文件組的邏輯名。可以指定多個文件或文件組。
|
FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var } --給一個或多個包含在資料庫備份中的文件命名。
--必須通過使用 BACKUP LOG 提供事務日誌的單獨備份,才能使用文件和文件組備份來恢複數據庫。如果恢復模型為 SIMPLE,則不允許文件和文件組備份。
}
備份完整資料庫
BACKUP DATABASE { database_name | @database_name_var } --database_name 資料庫名或@database_name_var 變數
TO < backup_device > [ ,...n ] --備份設備定義
[ WITH --WITH 選項
[ BLOCKSIZE = { blocksize | @blocksize_variable } ] --物理塊大小,BACKUP會自動選擇適合該設備的塊大小
[ [ , ] DESCRIPTION = { 'text' | @text_variable } ] --描述備份集的自由格式文本
[ [ , ] DIFFERENTIAL ] --差異備份
[ [ , ] EXPIREDATE = { date | @date_var } --備份集到期,該日期必須複合已配置的系統的datetime格式
| RETAINDAYS = { days | @days_var } ] --允許被重寫日期。變數必須為整型
[ [ , ] PASSWORD = { password | @password_variable } ] --備份集密碼,需提供密碼才能對改備份執行任何還原操作
[ [ , ] FORMAT --指定應將媒體頭寫入用於此備份操作的所有捲。任何現有的媒體頭都被重寫;
| NOFORMAT ] --預設,媒體頭不應寫入所有用於該備份操作的捲中,並且不要重寫該備份設備除非指定了 INIT。
[ [ , ] { INIT --重寫所有備份集,保留媒體頭,當備份設置沒有全部過期、備份集名和備份媒體上的名稱不匹配、用SKIP選項時不重寫備份媒體,如有密碼則不寫入媒體
| NOINIT } ] --預設設置,備份集追加到指定磁碟或磁帶,以保留現有的備份集.
[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ] --媒體集的自由格式文本
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ] --媒體集的媒體名
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ] --媒體集密碼
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ] --備份集的名稱,不指定NAME則為空。
[ [ , ] { NOSKIP --預設行為,指示BACKUP語句檢查媒體上所有備份集的到期日期,然後再允許它們被覆蓋。
| SKIP } ] --禁止通過BACKUP語句執行的備份集過期和名稱的檢查,以防止備份集的覆蓋。
[ [ , ] { NOREWIND --指定SQL Server將在備份操作後保持磁帶打開狀態。NOREWIND意味著NOUNLOAD,這些選項在單個BACKUP語句中是不相容的
| REWIND } ] --預設值,指定SQL Server釋放和倒帶磁帶。
[ [ , ] { NOUNLOAD --指定在BACKUP操作後,磁帶保持載入到磁帶機上。
| UNLOAD } ] --預設值,指定備份完成後磁帶將自動倒帶和卸載。
[ [ , ] RESTART ] --從SQL Server 2008開始,沒有任何效果。此選項被版本接受,與以前版本的SQL Server相容。
[ [ , ] STATS [ = percentage ] ] --每次其他百分比完成時顯示一條消息,用於衡量進度。如果省略百分比,SQL Server會在每10%完成後顯示一條消息
】
備份特定文件或文件組
BACKUP DATABASE { database_name | @database_name_var }
< file_or_filegroup > [ ,...n ]
TO < backup_device > [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] DIFFERENTIAL ]
[ [ , ] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
備份事務日誌
BACKUP LOG [demoData_Log] TO DISK = N'D:\Backup\demoData_Log.bak' WITH NOFORMAT,NOINIT, NAME = N'demoData_Log-Transaction Log Backup',SKIP, NOREWIND,NOUNLOAD,STATS = 10 GO
BACKUP LOG { database_name | @database_name_var }
{ TO < backup_device > [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
[ [ ,] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] NO_TRUNCATE ] --指定日誌未被截斷,並導致資料庫引擎嘗試備份,而不管資料庫的狀態如何。此選項允許在資料庫損壞的情況下備份日誌。
--沒有NO_TRUNCATE選項,資料庫必須處於ONLINE狀態。如果資料庫處於SUSPENDED狀態,則可以通過指定NO_TRUNCATE來創建備份。
--但是,如果資料庫處於OFFLINE或EMERGENCY狀態,即使使用NO_TRUNCATE也不允許BACKUP。
[ [ , ] { NORECOVERY --備份日誌的尾部,並將資料庫保留在RESTORING狀態。故障切換到輔助資料庫或在RESTORE操作之前保存日誌的尾部時,非常有用。
| STANDBY = undo_file_name } ] --備份日誌的尾部,使資料庫處於只讀狀態和待機狀態。STANDBY子句寫入備用數據(執行回滾,但可以進一步還原)。
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
] }
截斷事務日誌
BACKUP LOG { database_name | @database_name_var }
{ [ WITH
{ NO_LOG | TRUNCATE_ONLY } ] }
--無須備份複製日誌即刪除不活動的日誌部分,並且截斷日誌。該選項會釋放空間。因為並不保存日誌備份,所以沒有必要指定備份設備。NO_LOG 和 TRUNCATE_ONLY 是同義的。
--使用 NO_LOG 或 TRUNCATE_ONLY 備份日誌後,記錄在日誌中的更改不可恢復。為了恢復,請立即執行 BACKUP DATABASE。
--NO_TRUNCATE 允許在資料庫損壞時備份日誌。