应该对数据库运行 DBCC CHECKDB 和 DBCC CHECKCATALOG
(2010-11-10 10:16:16)
标签:
杂谈 |
分类: 电脑知识 |
http://topic.csdn.net/t/20060607/22/4807676.html
DBCC CHECKDB 与 DBCC CHECKCATALOG的使用2009-08-10 13:43提示如下数据库
'Express_YTO' 中检测到一个可能的数据库一致性问题。应该对数据库 'Express_YTO'运行 DBCC CHECKDB
和 DBCC CHECKCATALOG.
执行DBCC CHECKDB 和 DBCC CHECKCATALOG.发现了出错表是 ship_scanpod.在查询分析器中执行select * from ship_scanpod 反回3600行数据,还提示有错
在数据库 'Express_YTO' 中检测到一个可能的数据库一致性问题。应该对数据库'Express_YTO' 运行 DBCC CHECKDB 和 DBCC CHECKCATALOG。 连接中断.
以下参考文章
调试程序时,提示:java.sql.SQLException: [BEA][SQLServer JDBC Driver][SQLServer]在数据库 'cncsupport' 中检测到一个可能的数据库一致性问题。应该对数据库 'support' 运行 DBCC CHECKDB 和 DBCC CHECKCATALOG
检查了出错的页面 发现了出错表是 nc_softlist表 在查询分析器里用下面的语句查询
select * from nc_softlist
果然是这个表出错了 sql提示信息:
在数据库 'support' 中检测到一个可能的数据库一致性问题。应该对数据库 'support' 运行 DBCC CHECKDB 和 DBCC CHECKCATALOG。 连接中断
于是下面要做的就是修复这个表 使用下面的语句 尝试进行修复
DBCC CHECKTABLE('nc_softlist',REPAIR_REBUILD)
使用这个语句出现了错误提示,要求单用户下面进行修复
SELECT DATABASEPROPERTY ('ebook118000','IsSingleUser')
上面的这个语句可以查看当前数据库是否单用户
我这个库是非单用户状态 于是问题是怎么把数据库状态转换为单用户状态
sp_dboption 'ebook118000', 'single user', 'true'
使用上面的语句出现了错误 因为有其他用户正在链接 无法转换用户状态 怎么办?只有切断所有正在链接的用户了
(重启服务器,需关掉IIS)
use ebook118000
declare @spid int,@str varchar(100),@dbid int,@dbname
varchar(255)
set @dbname='ebook118000' --Replace with you Database Name,try
it
select @dbid=dbid from ebook118.dbo.sysdatabases WHERE name =
@dbname
declare cur_spid cursor local for
select spid from ebook118000.dbo.sysprocesses where dbid=@dbid
open cur_spid
fetch from cur_spid into @spid
while @@fetch_status=0
begin
set @str='kill '+Cast(@spid as varchar(10))
exec(@str)
fetch from cur_spid into @spid
end
close cur_spid
deallocate cur_spid
上面的语句 功能就是切断数据库所有链接
ok 现在继续进行用户状态的转换了
sp_dboption 'ebook118000', 'single user', 'true'
显示:执行成功.
好了现在计划回到本次操作的最终目的 修复nc_softlist这个表
使用这个语句(因为害怕数据损失)
DBCC CHECKTABLE('nc_softlist',REPAIR_REBUILD)和这个语句DBCC CHECKDB
('nc_softlist',Repair_Fast)
只好用下面的方法了,损失数据也没有办法了
DBCC CHECKTABLE('nc_softlist',repair_allow_data_loss)
执行成功 两处数据库不一致性被修复
迫不及待的 打开网站看看 失败~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
哦忘了将数据库的用户模式修改回来了
sp_dboption 'ebook118000', 'single user', 'false'
SELECT DATABASEPROPERTY ('ebook118000','IsSingleUser')执行这个语句查看当前状态已经是非单状态了
然后再次执行下面的语句 可以正常执行了没有了错误提示了
select * from nc_softlist
再看看网站 还是不能用 只要重新启动下sql就可以了
重建索引

加载中…