1、還原完整備份的語法以下:數據庫
RESTORE DATABASE { database_name | @database_name_var } --數據庫名服務器
[ FROM <backup_device> [ ,...n ] ] --備份設備ui
[ WITHspa
[ { CHECKSUM | NO_CHECKSUM } ] --是否校檢和日誌
[ [ , ] { CONTINUE_AFTER_ERROR | STOP_ON_ERROR } ] --還原失敗是否繼續事務
[ [ , ] ENABLE_BROKER ] --啓動Service Brokerast
[ [ , ] ERROR_BROKER_CONVERSATIONS ] --對束全部會話class
[ [ , ] FILE = { backup_set_file_number | @backup_set_file_number } ] --用於還原的文件gui
[ [ , ] KEEP_REPLICATION ] --將複製設置爲與日誌傳送一同使用變量
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ] --媒體名
[ [ , ] MEDIAPASSWORD = { mediapassword | --媒體密碼
@mediapassword_variable } ]
[ [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' ] --數據還原爲
[ ,...n ]
[ [ , ] NEW_BROKER ] --建立新的service_broker_guid值
[ [ , ] PASSWORD = { password | @password_variable } ] --備份集的密碼
[ [ , ] { RECOVERY | NORECOVERY | STANDBY = --恢復模式
{standby_file_name | @standby_file_name_var }
} ]
[ [ , ] REPLACE ] --覆蓋現有數據庫
[ [ , ] RESTART ] --從新啓動被中斷的還原操做
[ [ , ] RESTRICTED_USER ] --限制訪問還原的數據庫
[ [ , ] { REWIND | NOREWIND } ] --是否釋放和重繞磁帶
[ [ , ] { UNLOAD | NOUNLOAD } ] --是否重繞並卸載磁帶
[ [ , ] STATS [ = percentage ] ] --還原到其在指定的日期和時間時的狀態
[ [ , ] { STOPAT = { date_time | @date_time_var } --還原到指定的日期和時間
| STOPATMARK = { 'mark_name' | 'lsn:lsn_number' } --恢復爲已標記的事務或日誌序列號
[ AFTER datetime ]
| STOPBEFOREMARK = { 'mark_name' | 'lsn:lsn_number' }
[ AFTER datetime ]
} ]
]
[;]
<backup_device> ::=
{
{ logical_backup_device_name |
@logical_backup_device_name_var }
| { DISK | TAPE } = { 'physical_backup_device_name' |
@physical_backup_device_name_var }
}
其中大多參數在備份數據時已經介紹過了,下面介紹一些沒有介紹過的參數:
l ENABLE_BROKER:啓動Service Broker以便消息能夠當即發送。
l ERROR_BROKER_CONVERSATIONS:發生錯誤時結束全部會話,併產生一個錯誤指出數據庫已附加或還原。此時Service Broke將一直處於禁用狀態直到此操做完成,而後再將其啓用。
l KEEP_REPLICATION:將複製設置爲與日誌傳送一同使用。設置該參數後,在備用服務器上還原數據庫時,可防止刪除複製設置。該參數不能與NORECOVERY參數同時使用。
l MOVE:將邏輯名指定的數據文件或日誌文件還原到所指定的位置,至關於圖18.14中所示的【將數據庫文件還原爲】功能。
l NEW_BROKER:使用該參數在會在databases數據庫和還原數據庫中都建立一個新的service_broker_guid值,並經過清除結束全部會話端點。Service Broker已啓用,但未向遠程會話端點發送消息。
l RECOVERY:回滾未提交的事務,使數據庫處於可使用狀態。沒法還原其餘事務日誌
l NORECOVERY:不對數據庫執行任何操做,不回滾未提交的事務。能夠還原其餘事務日誌。
l STANDBY:使數據庫處於只讀模式。撤消未提交的事務,但將撤消操做保存在備用文件中,以即可以恢復效果逆轉。
l standby_file_name | @standby_file_name_var:指定一個容許撤消恢復效果的備用文件或變量。
l REPLACE:會覆蓋全部現有數據庫以及相關文件,包括已存在的同名的其餘數據庫或文件。
l RESTART:指定SQL Serve 應從新啓動被中斷的還原操做。RESTAR從中斷點從新啓動還原操做。
l RESTRICTED_USER:還原後的數據庫僅供db_owner、dbcreator或sysadmin的成員才能使用。
l STOPAT:將數據庫還原到其在指定的日期和時間時的狀態。
l STOPATMARK:恢復爲已標記的事務或日誌序列號。恢復中包括帶有已命名標記或 LSN 的事務,僅當該事務最初於實際生成事務時已得到提交,纔可進行本次提交。
l TOPBEFOREMARK:恢復爲已標記的事務或日誌序列號。恢復中不包括帶有已命名標記或LSN的事務,在使用WITH RECOVERY時,事務將回滾。
二例子 、備份與還原
備份:
BACKUP DATABASE "mydb" TO DISK ='C:\mybak.bak'
還原
use master
RESTORE DATABASE "mydb_hf" FROM DISK='C:\mybak.bak'
WITH
MOVE 'mydb_Data' TO 'c:\mydb20041217.mdf', --數據文件還原後存放的新位置
MOVE 'mydb_Log' TO 'c:\mydb20041217.ldf' ----日誌文件還原後存放的新位置或者2 --建立備份設備USE [master]GOEXEC master.dbo.sp_addumpdevice @devtype = N'disk', @logicalname = N'beifen', @physicalname = N'D:\beifen.bak'GO--完整備份到備份設備中BACKUP DATABASE [student] TO [beifen] WITH NOFORMAT, NOINIT, NAME = N'student-完整 數據庫 備份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO--還原完整備份RESTORE DATABASE [student] FROM [beifen] WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10GO--差別備份BACKUP DATABASE [student] TO [beifen] WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'student-差別 數據庫 備份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO--事務日誌備份BACKUP LOG [student] TO [beifen] WITH NOFORMAT, NOINIT, NAME = N'student-事務日誌 備份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO--還原到最近狀態RESTORE DATABASE [student] FROM [beifen] WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10GORESTORE DATABASE [student] FROM [beifen] WITH FILE = 2, NORECOVERY, NOUNLOAD, STATS = 10GORESTORE LOG [student] FROM [beifen] WITH FILE = 3, NOUNLOAD, STATS = 10GO