iT邦幫忙

DAY 18
8

SQL Server 無敵手冊系列 第 18

SQL Server 無敵手冊第十八篇-使用RESTORE(Transact-SQL)陳述式

  • 分享至 

  • xImage
  •  

上一篇文章跟大家介紹了BACKUP,所以接著下如果沒有介紹RESTORE就真的說不過去囉!所以接下來這篇我們就幫大家介紹RESTORE(Transact-SQL)陳述式。
RESTORE(Transact-SQL)陳述式與上一篇所介紹的BACKUP一樣,也是分為RESTORE DATABASE跟RESTORE LOG。

[RESTORE DATABASE陳述式]
您可以透過RESTORE DATABASE陳述式進行資料庫的還原,語法簡述如下:

RESTORE DATABASE <資料庫名稱> FROM <備份位置> WITH <還原選項>

上述語法是將資料庫依還原選項由指定的備份位置來還原。
<備份位置>
除了備份裝置名稱外還可以帶入DISK(檔案名稱)與TAPE(磁帶機名稱)參數。舉例來說,將'D:\AdventureWorksDW.bak'還原到AdventureWorksDW這個資料庫備的語法如下:

RESTORE DATABASE [AdventureWorksDW] FROM DISK = N'D:\AdventureWorksDW.bak' 

如果您要由到備份裝置(Backup Device)來還原,假設備份裝置名稱為'AWWD_Backup_Device',語法如下:

RESTORE DATABASE [AdventureWorksDW] FROM [AWWD_Backup_Device] 

關如何使用SQL Server 備份裝置,您可以參考SQL Server 無敵手冊第八篇
<還原選項>
還原選項說明如下:
PARTIAL:
指定部分還原作業,以還原主要檔案群組和任何指定的次要檔案群組。
[ RECOVERY | NORECOVERY | STANDBY = standby_file_name ]:
設定還原選項,,您可以參考SQL Server 無敵手冊第十篇
MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' :
指定還原時,將資料庫的檔案(logical_file_name_in_backup)還原到指定的檔案路徑(operating_system_file_name)。預設是執行備份時的原始位置。
RESTART:
將被中斷的還原作業重新啟動。
RESTRICTED_USER:
將新還原之資料庫的存取權限制於 db_owner、資料庫建立者 (dbcreator) 或系統管理員 (sysadmin) 等角色的成員。
REPLACE:
設定此選項後,如果還原後的資料庫名稱遇到相同則會被取代。
FILE ={ backup_set_file_number | @backup_set_file_number }:
指定要還原的備份組。例如,FILE=1,表示備份媒體的第一個備份組。預設值為1。
PASSWORD = { password | @password_variable }:
提供備份組的密碼。
MEDIANAME = { media_name | @media_name_variable } :
指定媒體的名稱。如果提供的話,媒體名稱必須符合備份磁碟區中的媒體名稱;否則,還原作業會終止。
MEDIAPASSWORD = { mediapassword | @mediapassword_variable }:
提供媒體集的密碼。
BLOCKSIZE = { blocksize | @blocksize_variable }:
指定實體區塊大小 (以位元組(bytes)為單位)。支援的大小為 512、1024、2048、4096、8192、16384、32768 和 65536 (64 KB) 位元組。磁帶裝置的預設值為 65536,其他裝置則為 512。此選項如果沒有設定,SQL Server 會自動選取裝置適用的區塊大小。
NO_CHECKSUM | CHECKSUM:
NO_CHECKSUM停用產生備份總和檢查碼 ,CHECKSUM啟用備份總和檢查碼,預設行為是,如果有總和檢查碼,便驗證總和檢查碼,如果沒有,就不檢查,繼續作業。。
STOP_ON_ERROR | CONTINUE_AFTER_ERROR:
STOP_ON_ERROR 總和檢查碼未驗證時便失敗,失敗後停止還原,CONTINUE_AFTER_ERROR則失敗後繼續執行還原工作,預設為STOP_ON_ERROR。
STATS [ = percentage ] :
完成多少百分比時,回報一則訊息。
REWIND | NOREWIND:
REWIND 將釋放和倒轉磁帶,NOREWIND則 SQL Server 的執行個體會保有磁帶機的擁有權,直到在相同處理序中執行的 BACKUP 或 RESTORE 命令使用 REWIND 或 UNLOAD 選項,或是伺服器執行個體關閉為止。預設為REWIND。
UNLOAD | NOUNLOAD :
UNLOAD在備份完成之後,便自動倒轉和卸載磁帶,NOUNLOAD 仍會在磁帶機上保持載入,預設值為UNLOAD。

看完了參數說明,接著我們就來看實際的範例,此範例我們將由'AWWD_Backup_Device'備份裝置中的第二個備份組還原到AdventureWorksDW_New的資料庫,並且將資料庫檔案的位置換到D:\。

RESTORE DATABASE [AdventureWorksDW_New] FROM [AWWD_Backup_Device]
WITH FILE=2, 
MOVE 'AdventureWorksDW' TO 'D:\AdventureWorksDW_New.mdf',    --資料庫主檔放到D:\AdventureWorksDW_New.mdf
MOVE 'AdventureWorksDW_Log' TO 'D:\AdventureWorksDW_New.ldf',--資料庫紀錄檔放到D:\AdventureWorksDW_New.ldf
RECOVERY
GO

RESTORE LOG陳述式]
介紹完RESTORE DATABASE後接著我們來說明RESTORE LOG,RESTORE LOG 是使用在交易紀錄還原上的陳述式,語法簡述如下:

RESTORE LOG <資料庫名稱> FROM <備份位置> WITH <還原選項>

RESTORE LOG <還原選項>除了PARTIAL不能搭配使用外,其他與RESTORE DATABASE相同,並且還多了下列選項讓DBA可以控制還作業的停止時間:
STOPAT | STOPATMARK | STOPBEFOREMARK :
STOPAT = { 'datetime' | @datetime_var }:
指定資料庫要還原到指定日期和時間時所處的狀態。
STOPATMARK = { 'mark_name' | 'lsn:lsn_number' } [ AFTER 'datetime' ]:
還原至指定的標示還原點或是紀錄序號(指定的交易會包含在還原中)。如果省略 AFTER datetime,還原會停在含有指定名稱的第一個標示。如果指定了 AFTER datetime,還原會剛好在 datetime 或之後停在含有指定名稱的第一個標示。
STOPBEFOREMARK = { 'mark_name' | 'lsn:lsn_number' } [ AFTER 'datetime' ]:
還原至指定的標示還原點或是紀錄序號之前(指定的交易會包含在還原中)。如果省略 AFTER datetime,還原會正好停在含有指定名稱的第一個標示之前。如果指定了 AFTER datetime,還原會剛好在 datetime 或之後停在含有指定名稱的第一個標示之前。

接著我們就用範例來說明,此範例將將由'AWWD_Backup_Device'備份裝置中的第二個備份組還原到AdventureWorksDW_New的資料庫並指定到特定的時間點。

RESTORE LOG [AdventureWorksDW_New] FROM [AWWD_Backup_Device]
WITH FILE=2, 
STOPAT ='20091017 18:00:00'
RECOVERY
GO

當然上一篇的撇步一樣可以拿出這篇使用,如果您覺得上列的說明一點都記不住也沒有關係,您可以像下圖先在SQL Server Management Studio中設定完成。

最後如下圖這樣再選取指令碼目的地,即可產生對應的 Transact-SQL RESTORE 指令碼。

當然要夠無敵一定要跟上篇一樣將在SQL Server Management Studio的選項對應到陳述式都要完整說明,下圖將還原資料庫視窗中的[一般]頁面對應到RESTORE陳述式:

跟備份畫面比較不一樣的是,在還原的[選項]頁面中,已經把對應的RESTORE陳述式都說明在選項後面(看來作視窗畫面的工程師果然不是同一人),這裡就把他沒有放進去的補充進來如下圖所示:

現在您已經學會如何使用RESTORE陳述式進行資料庫還原。


上一篇
SQL Server 無敵手冊第十七篇-使用BACKUP(Transact-SQL)陳述式
下一篇
SQL Server 無敵手冊第十九篇-SQL Server的記錄傳送(Log Shipping)簡介
系列文
SQL Server 無敵手冊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
funkent
iT邦高手 1 級 ‧ 2009-11-09 22:22:34

補上SQL Server 無敵手冊全系列的連結
SQL Server 無敵手冊

我要留言

立即登入留言