**********MSSQLSERVER,某表能读不能删,它怎么了?************

supsuccess 2002-01-26 07:54:09
各位老大,我昨天碰上这样一个问题:
某表在执行DELETE TABLENAME WHERE...的时候抱错,大意是非聚集索叶引入口...(不好意思,兄弟E文不好,powerbuilder的错误代码是S1000,用ODBC连接),但是SELECT还没有问题,我只好重建一表,跟它一样,导入数据...

我想问:是不是此表已经坏了?怎么坏的?我们平时该怎样做,以避免呢?

欢迎讨论!
...全文
287 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluepower2008 2002-01-29
  • 打赏
  • 举报
回复
海兄的功底的确深厚,这个帖子也可以放到精华区了,问得精彩,答得漂亮!
最后再补充一下,建议supsuccess(口气不小)在操作系统级对磁盘做一次完全扫描,来查出磁盘的坏块。
不能删表的原因就是因为那个索引出了问题,删表的同时会删除该表建立的所有索引,如果有一个索引的某个页面存在坏的磁盘扇区上,就会出现删表不成功。
supsuccess 2002-01-28
  • 打赏
  • 举报
回复
感谢Haiwer(海阔天空)和learnlj(共同走过)!
我试试!
learnlj 2002-01-28
  • 打赏
  • 举报
回复
同意楼上,重建索引试试DBCC DBREINDEX
zengting 2002-01-28
  • 打赏
  • 举报
回复
是不是权限问题?
昵称被占用了 2002-01-28
  • 打赏
  • 举报
回复
to:supsuccess(口气不小) 
你也太容易上火了!
从你说的看,好象是索引或者数据的存储有些问题,现在你重建一表,是个不错的应急方法。
以后遇到这个问题,可以用DBCC CHECKTABLE(YOURTABLENAME)来检查,有问题的话再用 DBCC CHECKDB 或者 DBCC CHECKALLOC 修复。

你的情况还有一种可能是表被表极锁,你的情况可能不是。
supsuccess 2002-01-28
  • 打赏
  • 举报
回复
好吧,先这样!谢谢Haiwer(海阔天空)!揭贴!以后少不了麻烦你!...
昵称被占用了 2002-01-28
  • 打赏
  • 举报
回复
我觉得你的问题不是一般的页之间的链结出现了断点,而是某个存储空间的物理问题,最好能新加硬盘,再把库导到新硬盘上,否则难保以后不出问题!
昵称被占用了 2002-01-28
  • 打赏
  • 举报
回复
新建的索引的名称和存储和旧的不会一样的,我觉得你删不掉就不如不删了,因为你的这个索引正好存储在一个有问题的存储空间,放出来反而会在以后其他地方出问题!
supsuccess 2002-01-28
  • 打赏
  • 举报
回复
奇怪!居然删不掉某个索引!
我新建一个索引(跟它一样),然后删除,没有问题!
我是在企业管理器中操作的.
昵称被占用了 2002-01-28
  • 打赏
  • 举报
回复
to: supsuccess(口气不小) 
下午因为有事,没解决就走了,这个不是麻烦和累的问题,解决不了问题我也上火!
看来如 bluepower2008(蓝色力量) 说的,硬盘有问题,但怎么解决呢?
我觉得还是某个索引的问题,你试着一个一个删除这个表的索引,看在什么时候出错误。
wlk 2002-01-28
  • 打赏
  • 举报
回复
您的ODBC连接用户没有Delete权限
supsuccess 2002-01-28
  • 打赏
  • 举报
回复
Haiwer(海阔天空)兄,这么麻烦你,我都不好意思了!要不你以后想起来再说吧,先休息休息!
supsuccess 2002-01-28
  • 打赏
  • 举报
回复
服务器: 消息 1117,级别 21,状态 9,行 1
Extent chain for object 180195692 is not correctly linked.

连接中断
昵称被占用了 2002-01-28
  • 打赏
  • 举报
回复
你的问题越来越奇怪了,你DBCC CHECKDB没有错,
dbcc checktable ('helhw1')也没有错
重建索引(DBCC DBREINDEX )时,报:
Extent chain for object 180195692 is not correctly linked.
drop table helhw1不行,最后问你一次了,drop table helhw1时报什么错,我快无能为力了!
supsuccess 2002-01-28
  • 打赏
  • 举报
回复
还是那样!怎么办?我用DROP TABLE 都不管用.
昵称被占用了 2002-01-28
  • 打赏
  • 举报
回复
to: supsuccess(口气不小) 
你的表是不是没有问题了?

supsuccess 2002-01-28
  • 打赏
  • 举报
回复
to:QQ576006(Ken)=================>不要捣乱!!!!!!!!!!!
QQ576006 2002-01-28
  • 打赏
  • 举报
回复
你可以试一试如下语句:将中间的字段,表换成你自己的
然后删除重复的记录。
SELECT [图号], [项目], [装置], [专业]
FROM 工程图
WHERE [图号] In (SELECT [图号] FROM [工程图] As Tmp GROUP BY [图号] HAVING Count(*)>1 )
ORDER BY [图号]
还不行的话,你在表中添加一个字段,
然后将字段信息放成记录号。
再查,删除记录号重复的就可以了
supsuccess 2002-01-28
  • 打赏
  • 举报
回复
试过了:
Checking helhw1
The total number of data pages in this table is 2151.
Table has 59297 data rows.
DBCC execution completed. If DBCC printed error messages, see your System Administrator.
昵称被占用了 2002-01-28
  • 打赏
  • 举报
回复
dbcc checktable ('helhw1')试过没有?
加载更多回复(17)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧