SQL Server 2005:数据库损坏-自动关闭数据库?

SQL Server 2005:数据库损坏-自动关闭数据库?

最近,我遇到了由于硬盘故障而导致的数据库损坏。SQL Server 2005 检测到了这个问题,并将有关不一致的数据库和无效页面校验和的条目放入 Windows 事件日志中。但它只是试图处理它。它继续对已经损坏的数据库进行每日备份,每次完整备份后,事务日志都会被删除。因此,我丢失了几天的数据库更改。

问题是:如果检测到损坏,是否有某种选项可以关闭受影响的数据库甚至整个 SQL Server?继续下去毫无意义,只会让事情变得更糟。

雷内

答案1

完整备份不会在完整或批量恢复模式下释放事务日志。只有日志备份或数据库处于简单恢复模式时才会释放事务日志。

如果出现页面校验和错误(或任何不一致错误),数据库不会故意脱机。数据库仍然可以提供大量服务,只有需要扫描该特定页面的查询会受到影响。可以通过执行页面恢复(需要日志备份)。如果错误发生在数据库的关键页面之一,则数据库将脱机,其中任何查询会受到影响。

运行备份并不能取代运行数据库一致性检查的需要。备份会获取数据库的快照照原样并且不对内容进行任何验证。有很多方法可以监控错误,例如页面校验和错误。可以配置 SQL Agent 以在发生错误时发送邮件或寻呼机通知。可以使用 WMI。SCCM 可以在企业级别执行此操作。

答案2

CHECKSUM 是数据库实例级别可用的页面验证选项,我们可以通过以下查询查看每个数据库当前正在使用的验证级别:

SELECT name, page_verify_option_desc FROM sys.databases

当检测到损坏时关闭整个 SQL Server 是没有意义的。

如今,页面验证选项已设置为 CHECKSUM,这是默认选项。对于 Pre-SQL 2005 版本,情况并非如此,因此偶尔在查看从早期版本迁移的数据库实例时,我们可能会看到选择了其他页面验证选项之一;它们是“页面损坏检测”或“无”。

相关内容