更多資源: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狀態,即可完成數據庫還原操作。
