我正在執行一個經常有效的RESTORE DATABASE語句,但偶爾不起作用,並且不報告任何錯誤。我們正在運行SQL Server 2008R2。批處理文件正在執行sqlcmd語句以從文件運行sql語句。該文件包含以下內容(請注意,名稱由,但正確的,因爲恢復通常工作):RESTORE DATABASE不起作用,並且不報告任何錯誤
USE MASTER;
RESTORE DATABASE TestMLS
FROM DISK = 'c:\TestMLS.bak'
WITH MOVE 'CorrectName1' TO 'c:\TestMLS.MDF',
MOVE 'CorrectName2' TO 'c:\TestMLS.LDF',
REPLACE;
ALTER DATABASE E2SS80Test SET MULTI_USER;
雖然試圖找到問題,我們啓用了「DBCC TRACEON(3004,3605追查, -1)「,它提供了正常信息,當恢復正常工作時,您會期望這些信息。下面的輸出是什麼日誌顯示,當恢復不起作用:
08/06/2013 13:42:25,spid59,Unknown,Setting database option MULTI_USER to ON for database TestMLS.
08/06/2013 13:42:25,spid59,Unknown,Resuming any halted fulltext crawls
08/06/2013 13:42:05,spid59,Unknown,X-locking database: TestMLS
08/06/2013 13:42:05,spid59,Unknown,Dismounting FullText catalogs
08/06/2013 13:42:05,spid59,Unknown,Halting FullText crawls on database TestMLS
08/06/2013 13:42:05,spid59,Unknown,Restore: Planning begins
08/06/2013 13:42:05,spid59,Unknown,Restore: Backup set is open
08/06/2013 13:42:05,spid59,Unknown,Restore: Configuration section loaded
08/06/2013 13:42:05,spid59,Unknown,Opening backup set
08/06/2013 13:42:05,spid59,Unknown,RestoreDatabase: Database TestMLS
需要注意的是還原:規劃開始發生,但恢復:規劃結束永遠不會出現。另外,Restore:BeginRestore永遠不會出現。
今天我找到了一種解決方法 - 以前在調用還原之前,腳本並未將數據庫脫機。添加一個語句來做到這一點看起來可以讓恢復工作。
我仍然想知道爲什麼我們會有這種行爲 - 看起來恢復過程至少應該失敗並出現錯誤,而不是僅僅不做所要求的。
任何信息或想法表示讚賞。
您正在使用批處理文件嗎?它仍然是1998年嗎?你有現代的編程工具,如Powershell,.Net,SSIS,T-SQL等,它們都有try/catch,並且可以很容易地返回像這樣的錯誤。 – brian
嗨,布賴恩 - 我很欣賞這種情緒,但我沒有設置這種工作方式的體系結構,而改變它需要改變作爲過程一部分的多個程序,所以這不會爲我們提供幫助。正如我在另一條評論中提到的那樣,批處理文件設置報告任何錯誤都很好 - 但是在這種情況下我沒有發現任何錯誤,既沒有從命令的執行中返回,也沒有在sql服務器跟蹤日誌中返回。 – MisterAcoustic