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

没法查询、删除、更新某个表的数据记录

2013-07-04 
无法查询、删除、更新某个表的数据记录故障原因:服务器的硬盘前两天出现硬盘坏道蛮严重,后从坏道的硬盘中提

无法查询、删除、更新某个表的数据记录
故障原因:
    服务器的硬盘前两天出现硬盘坏道蛮严重,后从坏道的硬盘中提出数据库文件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的无法按条件进行查询、删除、更新数据,可以插入数据。排查出是由自动编号ID(Did 是表B里添加的自动编号字段)引起的问题。


我用 DBCC DBREINDEX(B) 检查时提示错误如下:
Server: Msg 601, Level 12, St……


1.新建一个数据库,将旧数据库中的所有东西全部导入到新库中.
2.备份新库,删除旧库.
3.利用备份文件还原成旧库,或直接更改新库名为旧库名.
[解决办法]
DBCC CHECKTABLE('表名')
DBCc checkdb('数据库')

试一试
[解决办法]
支持9楼做法.
另可根据DBCC CHECKDB的结果.
进行数据库单分页的恢复,详见百度.
[解决办法]
可以正常读取的走9楼路线,不能正常读取的尝试10楼看看
还不行,,就搜索下数据库修复,CSDN里都不少一条一条尝试吧

热点排行