明志唯新

SQL2000 数据库中删除

发表于

在一些网站或者软件系统中,由于安全或者程序异常等问题,可能会在 SQL Server 2000 中造成一个异常问题:在企业管理器中打开数据库发现有一些坏表,即无法使用,也无法正常删除。其原因往往是因为在尝试建表的过程中,只向数据库服务器的系统表 sysobjects 中写入了类型为 U 的记录,却并未真正在数据库中成功创建该表的实体。ok,解决问题有思路了:

假设坏表的表名为 cmd,那么我们在查询分析器中对当前的数据库写一个 sql 语句:

delete from sysobjects where [name]='cmd' and xtype='U'

按 F5 执行,可能会碰到一个错误提示:

未启用对系统目录的特殊更新。系统管理员必须重新配置 SQL Server 以允许这种操作。

解决这个小小的问题的方法是:

打开 mssql server 属性 --> 服务器选项 --> 启用对系统目录的特殊更新(允许对系统目录进行直接修改) 。

之后重新在查询分析器中执行刚才的 sql 语句。

执行成功后。在企业管理器中会发现那个坏表已经不存在了。

注:SQL2005 中,由于微软做了重大调整,正常情况下不允许对系统表进行即席更新操作。所以本文提到的问题目前仅适用于 SQL2000 数据库,敬请注意!