還原使用 BACKUP 命令所做的備份。有關(guān)數(shù)據(jù)庫備份和還原操作的更多信息,請參見備份和還原數(shù)據(jù)庫。
還原整個數(shù)據(jù)庫:
RESTORE DATABASE { database_name | @database_name_var }
[ FROM < backup_device > [ ,...n ] ]
[ WITH
[ RESTRICTED_USER ]
[ [ , ] FILE = { file_number | @file_number } ]
[ [ , ] PASSWORD =
{ password | @password_variable
} ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD =
{ mediapassword | @mediapassword_variable
} ]
[ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
[ ,...n ]
[ [ , ] KEEP_REPLICATION ]
[ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name
} ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] REPLACE ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
還原數(shù)據(jù)庫的部分內(nèi)容:
RESTORE DATABASE { database_name | @database_name_var }
< file_or_filegroup > [ ,...n ]
[ FROM < backup_device > [ ,...n ] ]
[ WITH
{ PARTIAL }
[ [ , ] FILE = { file_number | @file_number } ]
[ [ , ] PASSWORD =
{ password | @password_variable
} ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD =
{ mediapassword | @mediapassword_variable
} ]
[ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
[ ,...n ]
[ [ , ] NORECOVERY ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] REPLACE ]
[ [ , ] RESTRICTED_USER ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
還原特定的文件或文件組:
RESTORE DATABASE { database_name | @database_name_var }
< file_or_filegroup > [ ,...n ]
[ FROM < backup_device > [ ,...n ] ]
[ WITH
[ RESTRICTED_USER ]
[ [ , ] FILE = { file_number | @file_number } ]
[ [ , ] PASSWORD =
{ password | @password_variable
} ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD =
{ mediapassword | @mediapassword_variable
} ]
[ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
[ ,...n ]
[ [ , ] NORECOVERY ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] REPLACE ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
還原事務(wù)日志:
RESTORE LOG { database_name | @database_name_var }
[ FROM < backup_device > [ ,...n ] ]
[ WITH
[ RESTRICTED_USER ]
[ [ , ] FILE = { file_number | @file_number } ]
[ [ , ] PASSWORD =
{ password | @password_variable
} ]
[ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
[ ,...n ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD =
{ mediapassword | @mediapassword_variable
} ]
[ [ , ] KEEP_REPLICATION ]
[ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [= percentage ] ]
[ [ , ] STOPAT = { date_time | @date_time_var }
| [ , ] STOPATMARK = 'mark_name' [ AFTER datetime ]
| [ , ] STOPBEFOREMARK = 'mark_name' [ AFTER datetime ]
]
]
< backup_device > ::=
{
{ 'logical_backup_device_name' | @logical_backup_device_name_var
}
| { DISK | TAPE } =
{ 'physical_backup_device_name' | @physical_backup_device_name_var }
}
< file_or_filegroup > ::=
{
FILE = { logical_file_name | @logical_file_name_var
}
|
FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var}
}
DATABASE
指定從備份還原整個數(shù)據(jù)庫。如果指定了文件和文件組列表,則只還原那些文件和文件組。
{database_name | @database_name_var}
是將日志或整個數(shù)據(jù)庫還原到的數(shù)據(jù)庫。如果將其作為變量 (@database_name_var) 提供,則可將該名稱指定為字符串常量 (@database_name_var = database name) 或字符串?dāng)?shù)據(jù)類型(ntext 或 text 數(shù)據(jù)類型除外)的變量。
FROM
指定從中還原備份的備份設(shè)備。如果沒有指定 FROM 子句,則不會發(fā)生備份還原,而是恢復(fù)數(shù)據(jù)庫??捎檬÷?FROM 子句的辦法嘗試恢復(fù)通過 NORECOVERY 選項(xiàng)還原的數(shù)據(jù)庫,或切換到一臺備用服務(wù)器上。如果省略 FROM 子句,則必須指定 NORECOVERY、RECOVERY 或 STANDBY。
< backup_device >
指定還原操作要使用的邏輯或物理備份設(shè)備??梢允窍铝幸环N或多種形式:
如果使用的是含有 UNC 名稱的網(wǎng)絡(luò)服務(wù)器或已重新定向的驅(qū)動器號,則請指定磁盤的設(shè)備類型。運(yùn)行 SQL Server 時所使用的帳戶必須具有對遠(yuǎn)程計算機(jī)或網(wǎng)絡(luò)服務(wù)器的 READ 訪問權(quán),這樣才能執(zhí)行RESTORE 操作。
n
是表示可以指定多個備份設(shè)備和邏輯備份設(shè)備的占位符。備份設(shè)備或邏輯備份設(shè)備最多可以為 64 個。
RESTRICTED_USER
限制只有 db_owner、dbcreator 或 sysadmin 角色的成員才能訪問新近還原的數(shù)據(jù)庫。在 SQL Server 2000 中,RESTRICTED_USER 替換了選項(xiàng) DBO_ONLY。提供 DBO_ONLY 只是為了向后兼容。
該選項(xiàng)可與 RECOVERY 選項(xiàng)一起使用。
有關(guān)更多信息,請參見設(shè)置數(shù)據(jù)庫選項(xiàng)。
FILE = { file_number | @file_number }
標(biāo)識要還原的備份集。例如,file_number 為 1 表示備份媒體上的第一個備份集,file_number 為 2 表示第二個備份集。
PASSWORD = { password | @password_variable }
提供備份集的密碼。PASSWORD 是一個字符串。如果在創(chuàng)建備份集時提供了密碼,則從備份集執(zhí)行還原操作時必須提供密碼。
有關(guān)使用密碼的更多信息,請參見"權(quán)限"。
MEDIANAME = {media_name | @media_name_variable}
指定媒體名稱。如果提供媒體名稱,該名稱必須與備份卷上的媒體名稱相匹配,否則還原操作將終止。如果 RESTORE 語句沒有給出媒體名稱,將不對備份卷執(zhí)行媒體名稱匹配檢查。
重要 在備份和還原操作中使用一致的媒體名稱可以為用于還原操作的媒體提供額外的安全檢查。
MEDIAPASSWORD = { mediapassword | @mediapassword_variable}
提供媒體集的密碼。MEDIAPASSWORD 是一個字符串。
如果格式化媒體集時提供了密碼,則訪問該媒體集上的任何備份集時都必須提供該密碼。
MOVE 'logical_file_name' TO 'operating_system_file_name'
指定應(yīng)將給定的 logical_file_name 移到 operating_system_file_name。默認(rèn)情況下,logical_file_name 將還原到其原始位置。如果使用 RESTORE 語句將數(shù)據(jù)庫復(fù)制到相同或不同的服務(wù)器上,則可能需要使用 MOVE 選項(xiàng)重新定位數(shù)據(jù)庫文件以避免與現(xiàn)有文件沖突??梢栽诓煌?MOVE 語句中指定數(shù)據(jù)庫內(nèi)的每個邏輯文件。
說明 使用 RESTORE FILELISTONLY 從備份集中獲取邏輯文件列表。
有關(guān)更多信息,請參見復(fù)制數(shù)據(jù)庫。
n
占位符,表示可通過指定多個 MOVE 語句移動多個邏輯文件。
NORECOVERY
指示還原操作不回滾任何未提交的事務(wù)。如果需要應(yīng)用另一個事務(wù)日志,則必須指定 NORECOVERY 或 STANDBY 選項(xiàng)。如果 NORECOVERY、RECOVERY 和 STANDBY 均未指定,則默認(rèn)為 RECOVERY。
當(dāng)還原數(shù)據(jù)庫備份和多個事務(wù)日志時,或在需要多個 RESTORE 語句時(例如在完整數(shù)據(jù)庫備份后進(jìn)行差異數(shù)據(jù)庫備份),SQL Server 要求在除最后的 RESTORE 語句外的所有其它語句上使用 WITH NORECOVERY 選項(xiàng)。
說明 如果指定 NORECOVERY 選項(xiàng),數(shù)據(jù)庫將處于這個中間的未恢復(fù)狀態(tài)而不可用。
當(dāng)用于文件或文件組還原操作時,NORECOVERY 強(qiáng)制數(shù)據(jù)庫在還原操作結(jié)束后保持還原狀態(tài)。這在以下情況中很有用:
RECOVERY
指示還原操作回滾任何未提交的事務(wù)。在恢復(fù)進(jìn)程后即可隨時使用數(shù)據(jù)庫。
如果安排了后續(xù) RESTORE 操作(RESTORE LOG 或從差異數(shù)據(jù)庫備份 RESTORE DATABASE),則應(yīng)改為指定 NORECOVERY 或 STANDBY。
如果 NORECOVERY、RECOVERY 和 STANDBY 均未指定,則默認(rèn)為 RECOVERY。當(dāng)從 SQL Server 早期版本中還原備份集時,可能要求將數(shù)據(jù)庫升級。如果指定了 WITH RECOVERY,升級將自動進(jìn)行。有關(guān)更多信息,請參見事務(wù)日志備份。
STANDBY = undo_file_name
指定撤消文件名以便可以取消恢復(fù)效果。撤消文件的大小取決于因未提交的事務(wù)所導(dǎo)致的撤消操作量。如果 NORECOVERY、RECOVERY 和 STANDBY 均未指定,則默認(rèn)為 RECOVERY。
STANDBY 允許將數(shù)據(jù)庫設(shè)定為在事務(wù)日志還原期間只能讀取,并且可用于備用服務(wù)器情形,或用于需要在日志還原操作之間檢查數(shù)據(jù)庫的特殊恢復(fù)情形。
如果指定的撤消文件名不存在,SQL Server 將創(chuàng)建該文件。如果該文件已存在,則 SQL Server 將重寫它。
對同一數(shù)據(jù)庫的連續(xù)還原可以使用相同的撤消文件。有關(guān)更多信息,請參見使用備用服務(wù)器。
重要 如果指定的撤消文件所在的驅(qū)動器上沒有可用的磁盤空間,還原操作將停止。
如果必須升級數(shù)據(jù)庫,則不允許 STANDBY。
KEEP_REPLICATION
指示還原操作在將發(fā)布的數(shù)據(jù)庫還原到創(chuàng)建它的服務(wù)器以外的服務(wù)器上時保留復(fù)制設(shè)置。當(dāng)設(shè)置復(fù)制與日志傳送一同使用時,需使用 KEEP_REPLICATION。這樣,當(dāng)在備用服務(wù)器上還原數(shù)據(jù)庫或日志備份并且恢復(fù)數(shù)據(jù)庫時,可防止刪除復(fù)制設(shè)置。還原備份時若指定了該選項(xiàng),則不能選擇 NORECOVERY 選項(xiàng)。
NOUNLOAD
指定不在 RESTORE 后從磁帶機(jī)中自動卸載磁帶。設(shè)置始終為 NOUNLOAD,直到指定 UNLOAD 為止。該選項(xiàng)只用于磁帶設(shè)備。如果對 RESTORE 使用非磁帶設(shè)備,將忽略該選項(xiàng)。
NOREWIND
指定 SQL Server 在備份操作完成后使磁帶保持打開。磁帶保持打開將防止其它過程訪問磁帶。直到頒發(fā) REWIND 或 UNLOAD 語句,或直到服務(wù)器關(guān)閉時,才釋放該磁帶。通過查詢 master 數(shù)據(jù)庫中的 sysopentapes 表可查找當(dāng)前打開的一系列磁帶。
NOREWIND 意即 NOUNLOAD。該選項(xiàng)只用于磁帶設(shè)備。如果對 RESTORE 使用非磁帶設(shè)備,將忽略該選項(xiàng)。
REWIND
指定 SQL Server 將釋放磁帶和倒帶。如果 NOREWIND 和 REWIND 均未指定,則默認(rèn)設(shè)置為 REWIND。該選項(xiàng)只用于磁帶設(shè)備。如果對 RESTORE 使用非磁帶設(shè)備,將忽略該選項(xiàng)。
UNLOAD
指定在還原完成后自動倒帶并卸載磁帶。啟動新用戶會話時其默認(rèn)設(shè)置為 UNLOAD。設(shè)置始終為 UNLOAD,直到指定 NOUNLOAD 為止。該選項(xiàng)只用于磁帶設(shè)備。如果對 RESTORE 使用非磁帶設(shè)備,將忽略該選項(xiàng)。
REPLACE
指定即使存在另一個具有相同名稱的數(shù)據(jù)庫,SQL Server 也應(yīng)該創(chuàng)建指定的數(shù)據(jù)庫及其相關(guān)文件。在這種情況下將刪除現(xiàn)有的數(shù)據(jù)庫。如果沒有指定 REPLACE 選項(xiàng),則將進(jìn)行安全檢查以防止意外重寫其它數(shù)據(jù)庫。安全檢查可確保在以下情況中,RESTORE DATABASE 語句不會將數(shù)據(jù)庫還原到當(dāng)前服務(wù)器:
若無法驗(yàn)證現(xiàn)有文件是否屬于正在還原的數(shù)據(jù)庫,則 REPLACE 也允許 RESTORE 重寫該文件。RESTORE通常拒絕重寫已存在的文件。
RESTART
指定 SQL Server 應(yīng)重新啟動被中斷的還原操作。RESTART 從中斷點(diǎn)重新啟動還原操作。
重要 只有當(dāng)直接從磁帶媒體還原以及跨越多個磁帶卷還原時才能使用該選項(xiàng)。
STATS [= percentage]
每當(dāng)另一個 percentage 結(jié)束時顯示一條消息,并用于測量進(jìn)度。如果省略 percentage,則 SQL Server 每完成 10 個百分比顯示一條消息。
PARTIAL
指定部分還原操作。應(yīng)用程序或用戶錯誤經(jīng)常影響到數(shù)據(jù)庫的某個孤立部分(如表)。這類錯誤的例子包括無效更新或錯誤地除去表。為支持從這些事件恢復(fù),SQL Server 提供可將數(shù)據(jù)庫的部分內(nèi)容還原到另一個位置的機(jī)制,以使損壞或丟失的數(shù)據(jù)可復(fù)制回原始數(shù)據(jù)庫。
部分還原操作的粒度是數(shù)據(jù)庫文件組。主要文件和文件組始終同指定的文件及其相應(yīng)的文件組一起還原。還原結(jié)果是數(shù)據(jù)庫的一個子集。沒有還原的文件組被標(biāo)記為脫機(jī),不能對其進(jìn)行訪問。
有關(guān)更多信息,請參見部分?jǐn)?shù)據(jù)庫還原操作。
<file_or_filegroup>
指定包括在數(shù)據(jù)庫還原中的邏輯文件或文件組的名稱??梢灾付ǘ鄠€文件或文件組。
當(dāng)使用此選項(xiàng)時,最后一個文件或文件組還原操作完成后,必須將事務(wù)日志應(yīng)用于數(shù)據(jù)庫文件,以便前滾文件使之與數(shù)據(jù)庫的其余部分保持一致。如果被還原的文件自上次備份后沒有一個做過修改,則不必應(yīng)用事務(wù)日志。RESTORE 語句向用戶通告這一情況。
n
是一個占位符,表示可以指定多個文件和文件組。對文件或文件組的最大個數(shù)沒有限制。
LOG
指定對該數(shù)據(jù)庫應(yīng)用事務(wù)日志備份。必須按有序順序應(yīng)用事務(wù)日志。SQL Server 檢查已備份的事務(wù)日志,以確保按正確的序列將事務(wù)裝載到正確的數(shù)據(jù)庫。若要應(yīng)用多個事務(wù)日志,請在除最后一個外的所有還原操作中使用 NORECOVERY 選項(xiàng)。有關(guān)更多信息,請參見事務(wù)日志備份。
STOPAT = date_time | @date_time_var
指定將數(shù)據(jù)庫還原到其在指定的日期和時間時的狀態(tài)。如果對 STOPAT 使用變量,則該變量必須是 varchar、char、smalldatetime 或 datetime 數(shù)據(jù)類型。只有在指定的日期和時間前寫入的事務(wù)日志記錄才能應(yīng)用于數(shù)據(jù)庫。
說明 如果指定的 STOPAT 時間超出 RESTORE LOG 操作的結(jié)束范圍,數(shù)據(jù)庫將處于不可恢復(fù)的狀態(tài),其效果與在 RESTORE LOG 中使用 NORECOVERY 一樣。
STOPATMARK = 'mark_name' [ AFTER datetime ]
指定恢復(fù)到指定的標(biāo)記,包括包含該標(biāo)記的事務(wù)。如果省略 AFTER datetime,恢復(fù)操作將在含有指定名稱的第一個標(biāo)記處停止。如果指定 AFTER datetime,恢復(fù)操作將在含有在 datetime 時或 datetime 時之后的指定名稱的第一個標(biāo)記處停止。
STOPBEFOREMARK = 'mark_name' [ AFTER datetime ]
指定恢復(fù)到指定的標(biāo)記,但不包括包含該標(biāo)記的事務(wù)。如果省略 AFTER datetime,恢復(fù)操作將在含有指定名稱的第一個標(biāo)記處停止。如果指定 AFTER datetime,恢復(fù)操作將在含有在 datetime 時或 datetime 時之后的指定名稱的第一個標(biāo)記處停止。
在還原過程中,指定的數(shù)據(jù)庫必須不處于使用狀態(tài)。指定數(shù)據(jù)庫中的任何數(shù)據(jù)將由還原的數(shù)據(jù)替換。
有關(guān)數(shù)據(jù)庫恢復(fù)的更多信息,請參見備份和還原數(shù)據(jù)庫。
只要操作系統(tǒng)支持?jǐn)?shù)據(jù)庫排序規(guī)則,就可以跨平臺執(zhí)行還原操作,即使這些平臺使用不同的處理器類型。有關(guān)更多信息,請參見 SQL Server 排序規(guī)則基礎(chǔ)知識。
下面是 SQL Server支持的還原類型:
有關(guān)更多信息,請參見事務(wù)日志備份。
若要維護(hù)向后兼容性,可以在 RESTORE 語句語法中使用以下關(guān)鍵字:
當(dāng)使用 RESTORE DATABASE 語句時,可還原的數(shù)據(jù)庫選項(xiàng)(除 offline 外的所有其它 ALTER DATABASE 可設(shè)置選項(xiàng),以及 merge publish、published 和 subscribed 復(fù)制選項(xiàng))將在 BACKUP 操作結(jié)束時大規(guī)模地重置為設(shè)置值。
說明 該行為與 Microsoft SQL Server 的早期版本不同。
但是,使用選項(xiàng) WITH RESTRICTED_USER 將替代用戶訪問選項(xiàng)設(shè)置的行為。該設(shè)置總是通過在 RESTORE 語句后加上 WITH RESTRICTED_USER 選項(xiàng)來設(shè)置。
有關(guān)更多信息,請參見備份和還原復(fù)制數(shù)據(jù)庫。
SQL Server 包含下列還原歷史記錄表,這些表跟蹤每個計算機(jī)系統(tǒng)的 RESTORE 活動:
說明 執(zhí)行 RESTORE 時,將修改備份歷史記錄表。
還原已損壞的 master 數(shù)據(jù)庫需要特殊的過程。有關(guān)更多信息,請參見還原 master 數(shù)據(jù)庫。
通過 Microsoft® SQL Server™ 2000 創(chuàng)建的備份無法還原為 SQL Server 的早期版本。
如果不存在要還原的數(shù)據(jù)庫,則用戶必須有 CREATE DATABASE 權(quán)限才能執(zhí)行 RESTORE。如果存在該數(shù)據(jù)庫,則 RESTORE 權(quán)限默認(rèn)授予 sysadmin 和 dbcreator 固定服務(wù)器角色成員以及該數(shù)據(jù)庫的所有者 (dbo)。
RESTORE 權(quán)限被授予那些成員資格信息始終可由服務(wù)器使用的角色。因?yàn)橹挥性诠潭〝?shù)據(jù)庫可以訪問且沒有損壞時(在執(zhí)行 RESTORE 時并不會總是這樣)才能檢查固定數(shù)據(jù)庫角色成員資格,所以 db_owner 固定數(shù)據(jù)庫角色成員沒有 RESTORE 權(quán)限。
此外,用戶可以為媒體集、備份集或兩者指定密碼。如果為媒體集指定了密碼,則用戶若只是適當(dāng)?shù)墓潭ǚ?wù)器和數(shù)據(jù)庫角色成員還不足以執(zhí)行備份。用戶還必須提供媒體密碼才能執(zhí)行這些操作。同樣,除非在還原命令中指定正確的媒體集密碼和備份集密碼,否則不能執(zhí)行還原操作。
在 BACKUP 語句中,定義備份集密碼和媒體集密碼為可選功能。使用密碼可防止利用 SQL Server 2000 工具未經(jīng)授權(quán)地執(zhí)行還原操作和在媒體中添加備份集,但是,密碼不能防止通過 FORMAT 選項(xiàng)重寫媒體。
因此,盡管使用密碼對防止利用 SQL Server 工具未經(jīng)授權(quán)地訪問媒體內(nèi)容有幫助,但密碼不能防止媒體內(nèi)容被破壞。密碼不能完全防止未經(jīng)授權(quán)地訪問媒體內(nèi)容,原因在于備份集中的數(shù)據(jù)沒有加密,理論上可以被專為此目的創(chuàng)建的程序所檢查。對于安全性至關(guān)重要的場合,防止未經(jīng)授權(quán)的個人訪問媒體非常重要。
指定密碼時不限定使用者的做法是錯誤的。
說明 所有的示例均假定已執(zhí)行了完整數(shù)據(jù)庫備份。
說明 MyNwind 數(shù)據(jù)庫僅供舉例說明。
下例顯示還原完整數(shù)據(jù)庫備份。
RESTORE DATABASE MyNwind
FROM MyNwind_1
下例還原完整數(shù)據(jù)庫備份后還原差異備份。另外,下例還說明如何還原媒體上的另一個備份集。差異備份追加到包含完整數(shù)據(jù)庫備份的備份設(shè)備上。
RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH NORECOVERY
RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH FILE = 2
下例使用 RESTART 選項(xiàng)重新啟動因服務(wù)器電源故障而中斷的 RESTORE 操作。
-- This database RESTORE halted prematurely due to power failure.
RESTORE DATABASE MyNwind
FROM MyNwind_1
-- Here is the RESTORE RESTART operation.
RESTORE DATABASE MyNwind
FROM MyNwind_1 WITH RESTART
下例還原完整數(shù)據(jù)庫和事務(wù)日志,并將已還原的數(shù)據(jù)庫移動到 C:\Program Files\Microsoft SQL Server\MSSQL\Data 目錄下。
RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH NORECOVERY,
MOVE 'MyNwind' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.mdf',
MOVE 'MyNwindLog1' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.ldf'
RESTORE LOG MyNwind
FROM MyNwindLog1
WITH RECOVERY
下例顯示使用 BACKUP 和 RESTORE 語句創(chuàng)建 Northwind 數(shù)據(jù)庫的復(fù)本。MOVE 語句使數(shù)據(jù)和日志文件還原到指定的位置。RESTORE FILELISTONLY 語句用于確定待還原數(shù)據(jù)庫內(nèi)的文件數(shù)及名稱。該數(shù)據(jù)庫的新復(fù)本稱為 TestDB。有關(guān)更多信息,請參見 RESTORE FILELISTONLY。
BACKUP DATABASE Northwind
TO DISK = 'c:\Northwind.bak'
RESTORE FILELISTONLY
FROM DISK = 'c:\Northwind.bak'
RESTORE DATABASE TestDB
FROM DISK = 'c:\Northwind.bak'WITH MOVE 'Northwind' TO 'c:\test\testdb.mdf',
MOVE 'Northwind_log' TO 'c:\test\testdb.ldf'
GO
下例將數(shù)據(jù)庫還原到其在 1998 年 4 月 15 日中午 12 點(diǎn)時的狀態(tài),并顯示涉及多個日志和多個備份設(shè)備的還原操作。
RESTORE DATABASE MyNwind
FROM MyNwind_1, MyNwind_2
WITH NORECOVERY
RESTORE LOG MyNwind
FROM MyNwindLog1
WITH NORECOVERY
RESTORE LOG MyNwind
FROM MyNwindLog2
WITH RECOVERY, STOPAT = 'Apr 15, 1998 12:00 AM'
下例顯示從 TAPE 備份設(shè)備還原完整數(shù)據(jù)庫備份。
RESTORE DATABASE MyNwind
\\
FROM TAPE = '.\tape0'
下例還原一個包含兩個文件、一個文件組和一個事務(wù)日志的數(shù)據(jù)庫。
RESTORE DATABASE MyNwind
FILE = 'MyNwind_data_1',
FILE = 'MyNwind_data_2',
FILEGROUP = 'new_customers'
FROM MyNwind_1
WITH NORECOVERY
-- Restore the log backup.
RESTORE LOG MyNwind
FROM MyNwindLog1
下例顯示將事務(wù)日志還原到名為"RoyaltyUpdate"的標(biāo)記處。
BEGIN TRANSACTION RoyaltyUpdate
WITH MARK 'Update royalty values'
GO
USE pubs
GO
UPDATE roysched
SET royalty = royalty * 1.10
WHERE title_id LIKE 'PC%'
GO
COMMIT TRANSACTION RoyaltyUpdate
GO
--Time passes. Regular database
--and log backups are taken.
--An error occurs.
USE master
GO
RESTORE DATABASE pubs
FROM Pubs1
WITH FILE = 3, NORECOVERY
GO
RESTORE LOG pubs
FROM Pubs1
WITH FILE = 4,
STOPATMARK = 'RoyaltyUpdate'
相關(guān)文章