不能DROP 表

painus 2014-01-18 07:34:28
昨晚遇到一个问题,SQL SERVER 2000数据库 test 中有一张表a,不能被删除,如下操作:
use test
go
drop table a
==========================================
服务器: 消息 823,级别 24,状态 2,行 3


连接中断
==========================================
用企业管理器进入这个数据库TEST,点击表后右键刷新--弹出对话框:错误823.
再次刷新--弹出对话框:错误0,此服务器已经断开,必须重新连接以执行此操作。

但是在查询分析器里面查看其他表,例如select * from b又是可以的。我现在的问题就是想删除这个有问题的表a,请问高手,如何解决。
...全文
271 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
KeepSayingNo 2014-01-20
  • 打赏
  • 举报
回复
你应该在远程的机器上进行的这个操作吧,你直接在服务器机器上执行这个语句应该可以,可能是网络或者服务器拒绝某类操作造成的
xiaoxiangqing 2014-01-20
  • 打赏
  • 举报
回复
是服务器有问题吧
發糞塗牆 2014-01-20
  • 打赏
  • 举报
回复
重建一下聚集索引试试
rfq 2014-01-20
  • 打赏
  • 举报
回复
删除索引 创建索引
sundayzhao 2014-01-20
  • 打赏
  • 举报
回复
这个问题遇到很多回了,这个解决办法就是重新建一个数据库,把其他的表导过去就行了,此表很难恢复,sysindexes出错了,dbcc checkdb也没有办法。
LongRui888 2014-01-19
  • 打赏
  • 举报
回复
引用 11 楼 painus 的回复:
回复版主: 按你的提示去操作 -- 从系统表删除表a delete test.dbo.sysobjects where id=[object id] delete test.dbo.sysindexes where id=[object id] delete test.dbo.syscolumns where id=[object id] sysobjects和syscolumns里面的可以删除,但是sysindexes 不能删除,提示 =================================== 服务器: 消息 823,级别 24,状态 2,行 1 连接中断 说明:数据库系统表sysindex已经被损害。 再次请教下,触发器是不是要自己一个个手工加上去,有没有其他方法可以批量加上去。
触发器得一个一个加上去,没办法批量加上去。 建议你用导入-导出 功能,那个可以批量导出到空白数据库
painus 2014-01-19
  • 打赏
  • 举报
回复
回复版主: 按你的提示去操作 -- 从系统表删除表a delete test.dbo.sysobjects where id=[object id] delete test.dbo.sysindexes where id=[object id] delete test.dbo.syscolumns where id=[object id] sysobjects和syscolumns里面的可以删除,但是sysindexes 不能删除,提示 =================================== 服务器: 消息 823,级别 24,状态 2,行 1 连接中断 说明:数据库系统表sysindex已经被损害。 再次请教下,触发器是不是要自己一个个手工加上去,有没有其他方法可以批量加上去。
LongRui888 2014-01-19
  • 打赏
  • 举报
回复
引用 8 楼 painus 的回复:
想请教下楼上的大师,弱弱的问一句,触发器可以导出到另外一个空白数据库吗?
触发器,只能在接下来有相应操作的时候,才能被触发,然后插入到另一个触发器。 但是你的表如果很多,那就得创建一堆的触发器,这个工作量比较大,而且之前已经存在的数据,也得先导出到空白数据库中
LongRui888 2014-01-18
  • 打赏
  • 举报
回复
你做一个数据库的检查: dbcc checkdb(数据库名称) go 看看有没有什么一致性的错误。
唐诗三百首 2014-01-18
  • 打赏
  • 举报
回复
SQL2000删除已损坏表的方法.

-- 获取损坏表的object id.
select id 
 from test.dbo.sysobjects 
 where xtype='U' and name='a'

-- 从系统表删除表a
delete test.dbo.sysobjects where id=[object id] --> 将以上查询的id值代入[object id]
delete test.dbo.sysindexes where id=[object id]
delete test.dbo.syscolumns where id=[object id]
painus 2014-01-18
  • 打赏
  • 举报
回复
想请教下楼上的大师,弱弱的问一句,触发器可以导出到另外一个空白数据库吗?
LongRui888 2014-01-18
  • 打赏
  • 举报
回复
引用 6 楼 painus 的回复:
感谢楼上网友的热心回答。网上找了很多资料并尝试去解决,但是都一一失败了,下面是我尝试解决的步骤: dbcc chcckdb(test) 返回======================= 服务器: 消息 8966,级别 16,状态 1,行 2 未能读取并闩锁页 (1:2296)(用闩锁类型 SH)。sysindexes 失败。 DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。 根据上面提示:sysindexes 失败,做下面动作 select id,name from test.dbo.sysindexes 提示 服务器: 消息 823,级别 24,状态 2,行 1 连接中断 准备放弃了。
额。。。 又中断了。 那就新建一个数据库,把里面的表都导入到新建的数据库中把。 数据库中有-》右键-》导出数据 。
painus 2014-01-18
  • 打赏
  • 举报
回复
感谢楼上网友的热心回答。网上找了很多资料并尝试去解决,但是都一一失败了,下面是我尝试解决的步骤: dbcc chcckdb(test) 返回======================= 服务器: 消息 8966,级别 16,状态 1,行 2 未能读取并闩锁页 (1:2296)(用闩锁类型 SH)。sysindexes 失败。 DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。 根据上面提示:sysindexes 失败,做下面动作 select id,name from test.dbo.sysindexes 提示 服务器: 消息 823,级别 24,状态 2,行 1 连接中断 准备放弃了。
---涛声依旧--- 2014-01-18
  • 打赏
  • 举报
回复
“此服务器已经断开,必须重新连接以执行此操作” 提示很清楚了,是连接不上服务器了
painus 2014-01-18
  • 打赏
  • 举报
回复
實例是不是設置了策略或是觸發器之類的,禁止刪除表呢? ============================================== 没有,应该是突然断电后引起的。
小魚人 2014-01-18
  • 打赏
  • 举报
回复
實例是不是設置了策略或是觸發器之類的,禁止刪除表呢?
ChinaITOldMan 2014-01-18
  • 打赏
  • 举报
回复
有搞定没,找到原因没?

34,594

社区成员

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

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