SQL Server 2008 数据库可疑

SQL Server 2008 数据库可疑

今天遇到数据库可疑,以前都是直接删了还原,这次没有最新的备份文件,一起看看脚本怎么解决

--最好一句句执行,方便看到错误
USE MASTER
GO
--开启数据库选项"允许更新"
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO
--将数据库状态改为"紧急"
ALTER DATABASE CEM2015 SET EMERGENCY
GO
USE CEM2015
GO
--将数据库设置为单用户模式,不能在 master 或 tempdb 数据库上使用 sp_dboption;   保证仅一个用户连接数据库在
sp_dboption 'CEM2015', 'single user', 'true'
GO
--修复数据库存在的一致性错误与分配错误
DBCC CHECKDB('CEM2015','REPAIR_ALLOW_DATA_LOSS')
GO
--将数据库状态改为"在线"
ALTER DATABASE CEM2015 SET ONLINE
GO
--关闭数据库选项"允许更新"
sp_configure 'allow updates', 0 reconfigure with override
GO
--将数据库设置为多用户模式
sp_dboption 'CEM2015', 'single user', 'false'
GO


--以上是数据库可以修复脚本,下面附查询辅助脚本
--查询指定数据库连接信息
SELECT * FROM [Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN (SELECT [DBID]FROM [Master].[dbo].[SYSDATABASES] WHERE NAME='CEM2015')
--查询数据库状态
SELECT state_desc FROM sys.databases WHERE  NAME='CEM2015'
--将数据库设置为单用户模式
USE master;
GO
ALTER DATABASE CEM2015
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
--将数据库设置为多用户模式
ALTER DATABASE CEM2015
SET MULTI_USER;
GO

官方数据库状态定义

https://msdn.microsoft.com/zh-cn/library/ms190442(v=sql.100).aspx

网上说的另一种方法:

1:重新建立一个,一样的数据库,路径名称,文件都一样。

2:关掉SQL Server服务;

3:把源文件COPY过来;

4:开启SQL Server服务,这样问题同样就解决了。

这种方法不好使,可能和环境或者版本有关系,我这试了是没效果的,重新copy之后启动,数据库前面的加号点开报错(数据库一致性之类的错),也就是数据库还是不能用。

看这逻辑好像只是换了个马甲,实际问题并没修复,不知原理,有知道的网友麻烦科普一下.

发表回复