首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql查询出有关问题

2013-12-04 
sql查询出问题?数据库是sql2000,有张表数据60多个字段,数据有250万条左右,这几天已通过sql查询分析器来查

sql查询出问题?
数据库是sql2000,有张表数据60多个字段,数据有250万条左右,这几天已通过sql查询分析器来查询就出问题了。查数据少点好像是可以的。
报错是:
服务器: 消息 7987,级别 22,状态 3,行 1
在数据库 'A-bus' 中检测到一个可能的数据库一致性问题。应该对数据库 'A-bus' 运行 DBCC CHECKDB 和 DBCC CHECKCATALOG。

连接中断

我看到网上的方法做
alter database [A-bus] set single_user
 
dbcc checkdb('A-bus',repair_rebuild)
 
alter database [A-bus] set multi_user

但运行了30多分钟了还没有反应。
还有我把A-bus这个数据库里的一张表数据导出到时大概导到240万条时就不动了,一直是这个界面。那可怎么办啊?我把那张表里的某个字段的数据类型从nvarchar 32 改成varchar 10也不行,有提示:
- 无法修改表。  
ODBC 错误: [Microsoft][ODBC SQL Server Driver][SQL Server]SqlDumpExceptionHandler: 进程 51 发生了严重的异常 c0000005 EXCEPTION_ACCESS_VIOLATION。SQL Server 将终止该进程。

[Microsoft][ODBC SQL Server Driver][SQL Server] 
[Microsoft][ODBC SQL Server Driver][SQL Server]Location: logrec.cpp:501
Expression: FALSE
SPID: 51
Process ID: 2812
Description: Invalid switch value
[解决办法]
先看看
dbcc checkdb('A-bus') WITH PHYSICAL_ONLY
 

[解决办法]
改成这样试试:

alter database [A-bus] set single_user with rollback immediate
 
dbcc checkdb('A-bus',repair_rebuild)
 
alter database [A-bus] set multi_user

[解决办法]
上面的代码,可能只能在2005及以上的版本运行,你再试试这个呢:
alter database [A-bus] set single_user
 
dbcc checkdb('A-bus',repair_rebuild) with tablock
 
alter database [A-bus] set multi_user

[解决办法]
导出来一个新库是比较好的选择
[解决办法]
引用:
我用dts和bcp导数据都少了4万多条数据,初步分析少了最近一个多月的数据。但在错误表里精确查询最近的数据是有的,现在怎么把这个4万多条数据导出来。
还有我用dbcc checkdb('A-bus') WITH PHYSICAL_ONLY执行后有报错如下:

服务器: 消息 8928,级别 16,状态 1,行 1
对象 ID 2057058364,索引 ID 0: 未能处理页 (1:346127)。详细信息请参阅其它错误。
服务器: 消息 8944,级别 16,状态 1,行 1
表错误: 对象 ID 2057058364,索引 ID 0,页 (1:346127),行 0。测试(columnOffsets->offTbl [varColumnNumber] <= (nextRec - pRec))失败。值为 517 和 501。
服务器: 消息 8928,级别 16,状态 1,行 1
对象 ID 2057058364,索引 ID 0: 未能处理页 (1:346128)。详细信息请参阅其它错误。
服务器: 消息 8939,级别 16,状态 1,行 1
表错误: 对象 ID 2057058364,索引 ID 0,页 (1:346128)。测试(*(((int*) &m_reservedB) + i) == 0)失败。值为 1 和 108。
'A-bus' 的 DBCC 结果。
对象 'bus_info' 有 0 行,这些行位于 0 页中。
CHECKDB 发现了 0 个分配错误和 4 个一致性错误(在表 'bus_info' 中,该表的对象 ID 为 2057058364)。
CHECKDB 发现了 0 个分配错误和 4 个一致性错误(在数据库 'A-bus' 中)。
repair_allow_data_loss 是最低的修复级别(对于由 DBCC CHECKDB (A-bus ) 发现的错误而言)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。


估计这4万多条数据,所在的页有问题,这个得修复,从输出的提示来看:
repair_allow_data_loss 是最低的修复级别(对于由 DBCC CHECKDB (A-bus ) 发现的错误而言)

还是得用repair_allow_data_loss 选项,再进行一次修复

热点排行