SQLServer中的數據庫備份和還原


 

更多資源:http://denghejun.github.io

 

備份

SQLServer中的備份,這里是T-SQL的用法,具體示例代碼如下,使用也相對簡單,其中TestDatabase

指所需備份的數據庫名稱,@FileName是需要備份的全路徑,例如@FileName的可能值為'D://Backups//file1.bak';

  USE TestDatabase
    BACKUP DATABASE TestDatabase
    TO DISK = @FileName

還原

SQLServer中的還原稍微麻煩點,因為涉及到一些權限或者訪問的問題,在實際中也遇到過這些問題,

在此作一個簡單介紹,下邊是基本的還原T-SQL代碼,其中各個元素同備份一樣,需要注意的是SQLServer

建議該腳本的執行環境最好要在MASTER中:

USE MASTER
    RESTORE DATABASE TestDatabase
    FROM DISK = @FileName

但是在很多時候,上邊的腳本並不理想,一般會出現"[Err] 42000 - [SQL Server]因為數據庫正在使用,

所以無法獲得對數據庫的獨占訪問權。42000 - [SQL Server]RESTORE DATABASE 正在異常終止。",

這樣的錯誤,很明顯,當我們在還原數據庫的時候,其他用戶正在使用的話,該腳本將會執行失敗,一般的

解決方案是殺掉所有正在使用數據庫的進程。但斷開所有連接用戶並回滾事務,並在稍后的某個時間顯示的數據

庫處於在線狀態,顯得更優雅些:

USE master
ALTER DATABASE TestDatabase SET offline WITH ROLLBACK IMMEDIATE
RESTORE DATABASE TestDatabase FROM DISK='F://test.bak' WITH REPLACE
ALTER DATABASE TestDatabase SET online

細心的你可能注意到,在還原時加了特殊的OPTION: WITH REPLACE,是因為前面BACKUP時,我們沒有備份

數據庫LOG相關的東西,所以我們干脆就直接將其按備份文件(.bak)全部替換就行了。不加,該腳本執行會失敗,

且提示你要么加上REPLACE,要么備份LOG。上邊的SET OFFLINE是讓數據庫暫時處於離線狀態,並將事物回滾,接

着我們執行RESTORE,最后,將數據庫重新設置為ONLINE狀態,即可完成數據庫還原操作。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM