2010-10-15 61 views
0

我在尋找一個簡單的腳本,我可以用它來覆蓋一個數據庫,用另一條從還原數據庫的數據庫。我們有一個主數據庫與主架構和數據,並每隔一段時間開發者想吹走從主設備的完全覆蓋他搞砸了分貝。我目前做到這一點與SQL Server Studio和GUI控件,但是我想(只是沒有備份文件的步驟)類似於我們使用從備份文件恢復時的東西:使用腳本

RESTORE DATABASE [SlaveDB] 
FROM DISK = N'E:\Backup\MasterDB.bak' 
WITH FILE = 1, 
MOVE N'SlaveDB_Data' TO N'E:\Data\SlaveDB_Data.mdf', 
MOVE N'SlaveDB_Log' TO N'E:\Log\SlaveDB_Log.ldf', 
NOUNLOAD, 
STATS = 10 
GO 

有什麼語法獲得分貝從另一個數據庫而不是備份文件?

+4

在服務器室,在每一個面板,您對頂部的「腳本」按鈕,將顯示你的SQL它在一個新窗口中執行。 – 2010-10-15 08:01:22

+0

只是一個建議,但有這樣的問題,它更可能是一些DBA的流連www.serverfault.com將能夠幫助你更好 – InSane 2010-10-15 08:14:35

+0

感謝@remi bourgarel,我不知道爲什麼我從來不之前使用那個小按鈕。由IDE生成的腳本去,看來SQL服務器只是備份到備份文件,然後還原該文件到數據庫被覆蓋。那麼,我會... – grenade 2010-10-15 08:37:22

回答

0

我使用這個腳本每天生產的備份恢復到測試數據庫。

  1. 生產和測試中的db名稱是相同的,假設它的名字是MyDb。

  2. 刪除測試數據庫

  3. 運行腳本


RESTORE FILELISTONLY 
FROM DISK = 'E:\WorkCopy\BackUp.bak' 

RESTORE DATABASE [MyDb] 
FROM DISK = 'E:\WorkCopy\BackUp.bak' 
WITH 
MOVE 'MyDbPrimary' TO 'D:\data\MyDb\WorkCopy.mdf', 
MOVE 'MyDbImp' TO 'D:\data\MyDb\WorkCopy_1.ndf', 
MOVE 'MyDbCut' TO 'D:\data\MyDb\WorkCopy_2.ndf', 
MOVE 'MyDbIX' TO 'D:\data\MyDb\WorkCopy_3.ndf', 
MOVE 'MyDbAUD' TO 'D:\data\MyDb\WorkCopy_4.ndf', 
MOVE 'MyDbLog' TO 'D:\data\MyDb\WorkCopy_5.ldf', 
move 'sysft_FTIndexCatalog' TO 'D:\data\MyDb\FTIndexCatalog' 


ALTER DATABASE MyDb 
Set RECOVERY SIMPLE