确定数据库卡在 RESTORING 状态的根本原因

Rad*_*hiu 11 sql-server backup powershell sql-server-2008-r2

我知道有一些问题可以解决数据库卡在RESTORING状态的问题,并且已经使用这些解决方案手动使数据库重新联机,但我的情况有些不同。

我使用 Powershell 脚本进行自动恢复,该脚本将生产副本恢复到 DEV 实例。脚本大约一年没有变化,偶尔恢复过程完成但恢复的数据库卡在RESTORING状态(有时脚本工作正常,有时会像这样失败)。

每次如果我手动重新运行该过程,它就会工作,或者如果我从 SSMS 的用户界面或通过 T-SQL 手动恢复数据库,它都会毫无问题地完成。

我找到了建议CHECKDB在恢复的数据库上运行的答案,但没有发现导致此问题的原因。

由于恢复脚本恢复了数据库的完整备份并使用了一个"WITH RECOVERY"选项,我试图找出可能会停止恢复过程的原因,尽管我实际上是使用"WITH RECOVERY".

任何建议都非常感谢,因为我一直试图理解为什么会不时发生这种情况。

我很想解决问题的根本原因而不是治标,即再次手动恢复数据库。

更新:

正如@Brent 推荐的那样,Github Gist在这里

Bre*_*zar 9

奥卡姆剃刀建议从显而易见的开始:

如果您的脚本有时会使数据库处于恢复状态,请调试该脚本。

首先在表或文件中记录您正在执行的操作。然后,当您最终使数据库处于恢复状态时,请返回您的日志以查看出了什么问题。(如果你想要社区的第二眼,尝试将你的脚本上传为 Github Gist,但请记住,它越大,人们就越难发现错误。)

更新:我看到您发布了带有错误消息的 Github Gist。这不是我要求的:我说,记录你在做什么,而不是 SQL Server 正在做什么。记录您为使数据库进入损坏状态而采取的操作。

如果您不想这样做,请尝试运行 Profiler 或扩展事件跟踪来跟踪还原事件,但请注意 -这比看起来要困难得多。(阅读该帖子的评论,了解更多他们尝试过但失败的读者想法。)