SQL数据库置疑修复
发布时间:2010-08-13 来源:文档文库
小
中
大
字号:
SQL数据库置疑修复说明文档
一, 数据库置疑产生的原因 二, 数据库置疑的预防 三, 数据库置疑的修复
一,数据库置疑产生的原因
1、 SQL Server所在分区空间是否够?数据库文件大小是否达到最大文件限制?
FAT32的格式只支持四G以内的文件
2、 数据库文件损坏或被非正常删除时出现这种情况 3、 病毒防火墙的扫描也会引起数据库置疑
4、 当SQL Server启动时,将会尝试获得对数据库文件的排他访问权,如果此时该文件被其他程序占用,或者遗失,数据库将会被标记为置疑。 5、 电脑非法关机也会造成数据库置疑 6、 电脑磁盘有坏道有可能造成数据库置疑
二,数据库置疑的预防
1、 数据库存放的盘符,空间是否够大,经常检查盘符的空间 2、 数据库存放的盘符的格式设置为NTFS格式
3、 进行病毒清除时,尽量把SQL服务停掉,再进行检查 4、 尽量减少非正常关机 5、 建议客户购买后备电源
6、 给客户实施软件之后一定要做好自动备份 7、 建议客户每隔一定时间手动备份一次
三,数据库置疑的修复
1, 点击后台登录时,如果提示如下图片就有可能表示数据库置疑了
2,
需要确认检查数据库置疑,打开企业管理器中的数据库目录,如下图显示表示置疑
下面所有修复置疑的语法,在没有特别提到时,默认数据库都请选择(Master)数据库)
3, 修复置疑(必须在SQL的查询分析器中才能进行数据修复置疑工作)
A、 打开查询分析器,当数据置疑之后在查询分析器中是看不到置疑的数据库名称的,所以进入查询分析器之后,所选数据库默认(Master)数据库即可。(复制下面置疑语法到查询分析器中执行。 --修复数据库置疑的语法
SP_configure 'allow update',1 go RECONFIGURE WITH OVERRIDE go update sysdatabases set status=-32768 where name='zmsoftpos_cs'--数据库名称
go dbcc rebuild_log('zmsoftpos_cs','D:\zmsoftpos_cs_log'--重新建立日志
Go update sysdatabases set status=26 where name='zmsoftpos_cs' Go Sp_configure 'allow update',0 Go Reconfigure with override GO
备注:其中所有的“zmsoftpos_cs”是置疑的数据库名称,请根据客户实际的置疑数据库进行更改名称,其他的内容不变
B、 拷入置疑语法之后,请按F5执行,如果显示框内显示的内容如下表示置疑修复成功
C、 置疑修复成功之后,再到如上图的master下拉框架内就可以选择所修复的置疑数据库了,此时置疑是修复成功了,但是并不代表此数据库就没有问题了,请暂时不要进软件,我们还需要检查数据库有没有问题。
4, 检查修复置疑好的数据库是否正常
A、 打开查询分析器选中修复好的数据库名称,输入“dbcc checkdb”语法,再按F5执行,根据数据库的大小执行需要的时间不确定,请耐心等待,执行完之后在显示框内就会显示一些相关内容如下图:
如上图所示,把显示框拖到最下面,如果“CHECKDB 发现了 0 个分配错误和 0 个一致性错误”即表示此数据库已经好了,不用再修复了,客户即可进入软件进行操作了。
备注:(以下的语法就不用再执行了)
B、 如果执行“dbcc checkdb”后显示框内显示了很多红色的记录,那么表示这个数据库的有些表还有错误需要修复
5, 修复过程如下:(修复过程中语法内的数据库名称都根据客户使用的数据库进行更改)
A、 首先退出所有的客户端软件与企业管理器,只打开查询分析器,默认数据库“Master”,拷入如下语法执行:
sp_dboption 'zmsoftpos_cs','single user','true' 备注:其中的数据库名称根据客户使用的数据库进行更改。此语法是把数据库设置为“单用户模式”
B、 设置为单用户模式之后,拷入如下语法进行多次执行
dbcc checkdb(zmsoftpos_cs,REPAIR_REBUILD 备注:数据库名称根据客户使用的数据库进行更改。此语法可以多次执行,也需要多次执行,每执行完一次拖到显示框内的最后面如果“发现的是0个分配错误与O个一致性错误”就不用再修复了,只需执行下面语法即可 Sp_dboption 'zmsoftpos_cs','single User', 'False', 备注:下面的语法也不需执行了。
如果执行多次之后:“CHECKDB 发现了 N个分配错误和 N个一致性错误”不会再次减少时,表示此语法修复不成功,需要进行下面的修复过程。
C、 再把下面语法拷进入,进行多次执行:
dbcc checkdb ('zmsoftpos_cs',REPAIR_allow_data_loss 备注:此语法的执行与上面“ B ”点中执行的语法过程一样,执行到此步骤百分之九十以上的数据库都是可以修复的。如果执行到最后分配错误与一致性错误还不减少,那么执行下面的”D”操作
D、 拷入如下语法执行:
exec sp_MSforeachtable 'dbcc dbreindex(''?''' 备注:执行此语法时,此时的“ Master ”数据库名称一定要选择修复的数据库名称,执行才会生效。执行完成之后,再使用“ dbcc checkdb ”语法再检查一次,如果是“发现的是0个分配错误与O个一致性错误”表示修复成功,如果是:“CHECKDB 发现了 N