65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.29/5 (64投票s)

2007年9月4日

CPOL

2分钟阅读

viewsIcon

402957

如何恢复 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

关注点

您会很高兴您的数据库和应用程序仍然处于可用状态。 :)

© . All rights reserved.