如何修复可疑数据库

arc*_*123 5 sql-server

我正在尝试修复可疑数据库。问题是当我运行时:

EXEC sp_resetstatus property;
Run Code Online (Sandbox Code Playgroud)

它给了我这个回应:

Warning: You must recover this database prior to access.
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时:

ALTER DATABASE property SET EMERGENCY;
Run Code Online (Sandbox Code Playgroud)

它也失败了:

Msg 5011, Level 14, State 7, Line 1
User does not have permission to alter database 'property', the database does not exist, or the database is not in a state that allows access checks.
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.
Run Code Online (Sandbox Code Playgroud)

我下一步该怎么做?谢谢。

The*_*war 3

从早期的备份副本中恢复是很好的。如果您没有备份副本..下面是修复可疑数据库的步骤..Paul Randal 在这里用更多示例对此进行了解释:创建、分离、重新附加,并修复可疑数据库

步骤概述

  1. 将可疑数据库设置为脱机
  2. 将这些 mdf ldf 文件复制到某个位置
  3. 删除旧的可疑数据库
  4. 创建具有相同名称和相同文件布局的新数据库
  5. 将这个新数据库设置为脱机
  6. 删除新创建的 mdf、ldf 文件并复制旧的损坏文件
  7. 现在尝试使数据库联机并尝试使用 DBCC 进行修复

下面是脚本

CREATE DATABASE DEMOSUSPECT

ALTER DATABASE DEMOSUSPECT SET OFFLINE

--- you have to copy and drop the old database files prior to this
----NOW DELETE THE mdf and ldf files created for new database

--copy those corrupted files into new location
alter database demosuspect set online

 --check status once
SELECT DATABASEPROPERTYEX (N'DemoSuspect', N'STATUS')

--tyr putting the database into emergency mode and use DBCC
ALTER DATABASE [DemoSuspect] SET EMERGENCY;
GO
ALTER DATABASE [DemoSuspect] SET SINGLE_USER;
GO
DBCC CHECKDB (N'DemoSuspect', REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;
GO


-- Check the state
SELECT DATABASEPROPERTYEX (N'DemoSuspect', N'STATUS') AS N'Status';
GO
Run Code Online (Sandbox Code Playgroud)