日期:2014-05-17  浏览次数:20510 次

无法查询、删除、更新某个表的数据记录
故障原因:
    服务器的硬盘前两天出现硬盘坏道蛮严重,后从坏道的硬盘中提出数据库文件aaa.dbf,aaa.log两个,然后附加数据库aaa,某个表B的无法按条件进行查询、删除、更新数据,可以插入数据。排查出是由自动编号ID(Did 是表B里添加的自动编号字段)引起的问题。
    我用 DBCC DBREINDEX(B) 检查时提示错误如下: 
    Server: Msg 601, Level 12, State 3, Line 1
由于数据移动,未能继续以 NOLOCK 方式扫描。
    请教各位达人,如何处理这个表B,才能进行表的正常操作‘查询、删除、更新’数据。
   谢谢!

------解决方案--------------------
可以对表结构进行修改么?
------解决方案--------------------
直接delete from table where id=存在的某id 你说的是不能删除 报错什么错误?
------解决方案--------------------

---邹建 
--创建测试表 
CREATE   TABLE   t1(ID   int   IDENTITY,A   int) 
GO 
--插入记录 
INSERT   t1   VALUES(1) 
GO 
--1.   将IDENTITY(标识)列变为普通列 
ALTER   TABLE   t1   ADD   ID_temp   int 
GO 

UPDATE   t1   SET   ID_temp=ID 
ALTER   TABLE   t1   DROP   COLUMN   ID 
EXEC   sp_rename   N 't1.ID_temp ',N 'ID ',N 'COLUMN ' 
INSERT   t1   VALUES(100,9) 
GO 

--2.   将普通列变为标识列 
CREATE   TABLE   t1_temp(ID   int,A   int   IDENTITY) 
SET   IDENTITY_INSERT   t1_temp   ON 
INSERT   t1_temp(ID,A)   SELECT   *   FROM   t1 
SET   IDENTITY_INSERT   t1_temp   OFF 
DROP   TABLE   T1 
GO 

EXEC   sp_rename   N 't1_temp ',N 't1 ' 
INSERT   t1   VALUES(109999) 
GO 

--显示处理结果 
SELECT   *   FROM   t1 
/*--结果: 
ID                     A   
-----------------   -----------   
1                       1 
100                   9 
109999             10 
--*/ 

------解决方案--------------------
引用:
故障原因:
服务器的硬盘前两天出现硬盘坏道蛮严重,后从坏道的硬盘中提出数据库文件aaa.dbf,aaa.log两个,然后附加数据库aaa,某个表B的无法按条件进行查询、删除、更新数据