如何恢复 SQL Server 2005 处于可疑状态的数据库






4.29/5 (64投票s)
如何恢复 SQL Server 2005 处于可疑状态的数据库
引言
如果您的项目数据库处于疑似模式,那么在您修复数据库之前,任何事务都无法进行。 这将导致您正在运行的应用程序停止运行。 在这里,您将找到摆脱这种困境的方法。
背景
您的数据库处于疑似模式。 我猜您现在还没有遇到这个问题。 但是,如果它发生了,并且数据库是 在线的,那么是时候阅读这篇文章来摆脱这种紧张了。
Using the Code
如果您发现您的数据库处于疑似模式,请保持冷静。 按照我下面写的方式一步一步进行。 我想您会摆脱这种困境的。 SQL Server 2005 引入了一种新的数据库状态,称为紧急模式。 这种模式可以将数据库从疑似模式更改为紧急模式,以便您可以以只读模式检索数据。 步骤如下... 执行下面的脚本后,您的数据库将恢复到运行模式。 实际上,我已经用我的两个现有在线系统进行了测试,没有发现任何数据丢失。
注意:显然还有两个其他的选项可用。 运行 REPAIR_ALLOW_DATA_LOSS
以确保数据库恢复到结构和转换上的一致状态。 关于紧急模式修复,这里有一些需要记住的事情:这是一个单向操作。 它所做的任何事情都无法回滚或撤销。 如果这让您担心(如果有人进入了那种状态,那么他们一开始就不应该对数据有健康的关注),请在运行紧急模式修复之前复制损坏的数据库。
由于这是一个单向操作,您无法将其包装在显式用户事务中。
这是紧急模式中唯一可用的修复选项 - 如果您尝试使用 REPAIR_REBUILD
,则它将不起作用。
EXEC sp_resetstatus 'yourDBname';
ALTER DATABASE yourDBname SET EMERGENCY
DBCC checkdb('yourDBname')
ALTER DATABASE yourDBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB ('yourDBname', REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE yourDBname SET MULTI_USER
关注点
您会很高兴您的数据库和应用程序仍然处于可用状态。 :)