诊断 Microsoft SQL Server 错误 9001:数据库日志不可用

诊断 Microsoft SQL Server 错误 9001:数据库日志不可用

周末,我运行的一个网站停止了运行,每次向该网站发出请求时,事件查看器中都会记录以下错误:

事件 ID:9001

数据库日志'数据库名称' 不可用。检查事件日志中是否有相关错误消息。解决所有错误并重新启动数据库。

该网站托管在专用服务器上,因此我能够通过 RDP 进入服务器并四处查看。LDF数据库的文件存在于C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA文件夹中,但尝试从 Management Studio 对数据库进行任何操作都会导致出现一个对话框,报告相同的错误 - 9001:数据库日志不可用...

这是我第一次收到此错误,我已经在这个专用网络服务器上托管此网站(和其他网站)两年多了。

据我所知,此错误表示日志文件已损坏。我能够通过分离数据库然后恢复几天前的备份来使网站恢复在线,但我担心的是,此错误表明存在更严重的问题,即硬盘故障。

我给网络托管公司的支持人员发送了电子邮件,这是他们的回复:

事件日志中似乎没有任何其他迹象表明原因,因此日志可能已损坏。目前内存资源为 87%,这也可能产生影响,但可能性不大。

日志会不会“损坏”?

我的问题:我应该采取哪些步骤来诊断此问题?如何确定这是否确实是硬件问题?如果是,除了更换磁盘之外还有其他选择吗?

谢谢

答案1

超过 99% 的数据库损坏问题都与存储系统有关。其余问题中有一半是由于内存问题,另一半是 SQL Server 中的错误。

这很可能是一个存储问题。

如果再次发生这种情况,请对数据库运行 DBCC CHECKDB,这将为您提供有关损坏的更多信息,以及是否可以在不进行恢复的情况下解决问题。您可能需要在紧急模式下使数据库联机,以便对数据库运行 checkdb。

内存使用率为 87% 与问题无关。SQL Server 会按照设计将内存一直运行到 100%(或接近 100%)。

答案2

我通过在 Management Studio 中将数据库脱机然后立即将其重新联机来解决这个问题。dbcc checkdb抛出错误后,执行此操作即可解决。 我不能说为什么这只是有效做过工作。

答案3

我最近也遇到了这个问题,经过大量研究后发现,当数据库设置为 AUTO CLOSE 时,这种情况很常见。我将所有数据库都设置为 AUTO CLOSE = FALSE。一开始只有一个数据库出现这种情况,然后是两个,接下来是所有数据库都出现这种情况。我只是重新启动了 SQL Server 实例服务,而不是恢复数据库。修复此症状的另一种方法是将有问题的数据库脱机,然后再将其重新联机。

答案4

我猜测/希望您已经为您的 SQL 服务器的磁盘配备了 raid。如果您怀疑存在硬件问题,我要做的第一件事就是运行您的 raid 维护/诊断工具。

第二件事(如果可以的话可能是同时进行的)是在数据库上运行 dbcc checkdb(也可能是在系统数据库上运行)。

相关内容