一个客户的思迅服装之星连锁版,今天一个门店出现了SQL Server服务不能启动的故障,解决了启动问题并还原数据库后,打开门店系统做数据交换,当上传数据的时候出现DataWindow Error错误:“Select error,由于数据移动,未能继续以NOLOCK方式扫描”。不能继续上传。如图所示:
出现这个错误是因为数据库中有错误,修复错误后即可正常数据交换。
思迅服装之星数据库错误的修复方法(均在“查询分析器”中运行相应的语句):
- 检查错误及数量
DBCC CHECKDB('hbfsv8_branch')
- 设置单用户模式
USE master Go EXEC sp_dboption 'hbfsv8_branch', 'single user', 'TRUE' --设置单用户模式 go
- 数据库修复
DBCC CHECKDB ('hbfsv8_branch','repair_rebuild') Go
- 再次检查有没有错误
DBCC CHECKDB('hbfsv8_branch') --如果没有了红色提示文字,说明修复成功,否则上面数据库修复语句的repair_rebuild改成repair_allow_data_loss重新执行一遍,并再次检查错误。
- 返回多用户模式
EXEC sp_dboption 'hbfsv8_branch', 'single user','FALSE' go
- 数据库修复好后,最后执行一下自增列的修复
use hbfsv8_branch go declare @tablename varchar(100) declare test_cur cursor for select object_name(id) from syscolumns where status=128 open test_cur fetch test_cur into @tablename while @@fetch_status=0 begin DBCC CHECKIDENT (@tablename, RESEED) fetch test_cur into @tablename end close test_cur deallocate test_cur go
其实检查和修复SQL数据库错误的语句都是一样的(参见检测和修复SQL数据库错误),只是思迅最后这里多了个“自增列的修复”(这个东西我自己也不是很明白是啥作用)。