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


10

我知道有一些问题可以解决数据库卡在RESTORING状态中的问题,并使用这些解决方案手动将数据库恢复在线状态,但是我的情况有所不同。

我使用Powershell脚本进行了自动还原,该脚本将生产的副本还原到DEV实例。这些脚本在大约一年内没有发生变化,并且偶尔会完成还原过程,但是还原后的数据库仍处于RESTORING状态(有时脚本可以正常工作,有时会失败)。

每当我手动重新运行该过程时,或者从SSMS的用户界面或通过T-SQL手动还原数据库时,它都会毫无问题地完成。

我找到了建议CHECKDB在还原后的数据库上运行的答案,但没有任何结果导致此问题。

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

真的很感谢任何建议,因为我一直努力了解为什么会不时发生这种情况。

我非常想解决问题的根本原因,而不是解决症状,那就是再次手动还原数据库。

更新:

Github Gist如@Brent建议- 在此处


1
您可以从SQL Server日志和事件查看器中获得答案,是否已选中?。是否发生某种空间问题,因为这可能导致恢复状态卡住。您是否在还原之前验证备份的完整性?您的存储子系统如何
-Shanky

@Shanky我将看看这些内容,尽管我无法直接访问该信息(我需要熟悉SAN管理员)。备份完整性和写入磁盘时都将检查备份完整性。
Radu Gheorghiu

1
SQL Server错误日志怎么说?尝试运行EXEC sys.xp_readerrorlog 0,1;-在还原操作期间查找消息。
Max Vernon

@MaxVernon 恢复发生时的错误日志。我已经检查了错误消息,并且似乎建议您检查磁盘空间,这是足够的。我将进行更深入的研究,看看可以找到什么,但是快速浏览一下,可能会扩展很多,并让我研究很多东西
Radu Gheorghiu

Answers:


8

奥卡姆(Occam)的剃刀建议从明显的东西开始:

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

首先记录您在表或文件中正在执行的操作。然后,当您最终使数据库处于还原状态时,请退回到日志中查看出了什么问题。(如果您想让社区再看看,请尝试以Github Gist的身份上传脚本,但请记住,脚本越大,人们发现错误的难度就越大。)

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


感谢布伦特,这是一些很好的指导原则!当我有更多信息时,我将提供最新信息,目前数据库尚可,我将看到明天早晨再次运行该流程时会发生什么。
Radu Gheorghiu
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.