0
我有,我想腳本中使用下面的恢復ELMAH數據庫:如何阻止SQL Server從覆蓋數據庫恢復?
RESTORE DATABASE [Elmah]
FROM DISK = N'E:\Elmah_backup_2012_11_02_030003_1700702.bak'
WITH FILE = 1,
MOVE N'Elmah' TO N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Elmah.mdf',
MOVE N'Elmah_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Elmah.ldf',
NOUNLOAD, STATS = 10
GO
即使我不包括我每次執行該語句將其恢復到現有的數據庫WITH REPLACE
。
我會在執行此操作之前始終刪除所有數據庫,並且我從不希望此代碼在生產中意外恢復數據庫。
如何更改此代碼,以便它永遠不會覆蓋現有的數據庫?
我實際上是通過SMO對象來做這件事,但是原理和結果都是一樣的,所以我希望把這個簡化爲只需要TSQL,希望我可以將這些信息推廣到需要設置的東西上適當的SMO.Restore對象。
Marc_S,謝謝你的信息。我試圖完成的不是以不同的名稱恢復備份,我想要的是備份過程失敗而不是自動覆蓋數據庫。基本上我想要if存在然後失敗的語義,但我希望恢復作業本身失敗,沒有我檢查數據庫是否存在。有沒有覆蓋選項? –
@ObligatoryMoniker:我在回答中顯示的T-SQL'RESTORE'語句將不會覆蓋現有的數據庫。爲此,您需要添加一個'REPLACE'子句(例如在'NOUNLOAD'之後) –