RESTORE DATABASE不起作用,并且不报告任何错误

时间:2013-08-06 20:48:32

标签: sql-server sql-server-2008 sql-server-2008-r2

我正在执行一个经常有效的RESTORE DATABASE语句,但偶尔也不起作用,并且不会报告任何错误。我们正在针对SQL Server 2008R2运行。批处理文件正在执行sqlcmd语句以从文件运行sql语句。该文件包含以下内容(请注意,名称已组成,但正确,因为还原通常有效):

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永远不会出现。

今天我发现了一种解决方法 - 以前脚本在调用恢复之前没有使数据库脱机。添加一个语句可以使恢复始终有效。

我仍然想知道为什么我们会出现这种行为 - 似乎恢复过程至少应该失败并出现错误,而不是仅仅没有做出要求。

感谢任何信息或想法。

1 个答案:

答案 0 :(得分:0)

我认为恢复有时不会发生,因为当时正在使用的数据库正在使用中。尝试在RESTORE DATABASE命令之前添加此项:

ALTER DATABASE [TestMLS] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;