今天遇到数据库可疑,以前都是直接删了还原,这次没有最新的备份文件,一起看看脚本怎么解决
1 --最好一句句执行,方便看到错误
2 USE MASTER
3 GO
4 --开启数据库选项"允许更新"
5 SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
6 GO
7 --将数据库状态改为"紧急"
8 ALTER DATABASE CEM2015 SET EMERGENCY
9 GO
10 USE CEM2015
11 GO
12 --将数据库设置为单用户模式,不能在 master 或 tempdb 数据库上使用 sp_dboption; 保证仅一个用户连接数据库在
13 sp_dboption 'CEM2015', 'single user', 'true'
14 GO
15 --修复数据库存在的一致性错误与分配错误
16 DBCC CHECKDB('CEM2015','REPAIR_ALLOW_DATA_LOSS')
17 GO
18 --将数据库状态改为"在线"
19 ALTER DATABASE CEM2015 SET ONLINE
20 GO
21 --关闭数据库选项"允许更新"
22 sp_configure 'allow updates', 0 reconfigure with override
23 GO
24 --将数据库设置为多用户模式
25 sp_dboption 'CEM2015', 'single user', 'false'
26 GO
27
28
29 --以上是数据库可以修复脚本,下面附查询辅助脚本
30 --查询指定数据库连接信息
31 SELECT * FROM [Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN (SELECT [DBID]FROM [Master].[dbo].[SYSDATABASES] WHERE NAME='CEM2015')
32 --查询数据库状态
33 SELECT state_desc FROM sys.databases WHERE NAME='CEM2015'
34 --将数据库设置为单用户模式
35 USE master;
36 GO
37 ALTER DATABASE CEM2015
38 SET SINGLE_USER
39 WITH ROLLBACK IMMEDIATE;
40 GO
41 --将数据库设置为多用户模式
42 ALTER DATABASE CEM2015
43 SET MULTI_USER;
44 GO
官方数据库状态定义
https://msdn.microsoft.com/zh-cn/library/ms190442(v=sql.100).aspx
网上说的另一种方法:
1:重新建立一个,一样的数据库,路径名称,文件都一样。
2:关掉SQL Server服务;
3:把源文件COPY过来;
4:开启SQL Server服务,这样问题同样就解决了。
这种方法不好使,可能和环境或者版本有关系,我这试了是没效果的,重新copy之后启动,数据库前面的加号点开报错(数据库一致性之类的错),也就是数据库还是不能用。
看这逻辑好像只是换了个马甲,实际问题并没修复,不知原理,有知道的网友麻烦科普一下.