![SQL 2000 中的 Sysobjects 问题](https://linux22.com/image/521130/SQL%202000%20%E4%B8%AD%E7%9A%84%20Sysobjects%20%E9%97%AE%E9%A2%98.png)
某个表有问题。正在使用 Kimberly Tripp 的脚本根据碎片级别重建索引。作业失败并出现以下错误:
消息 2501,严重性 16:找不到名为“CMS_InfoObjects6”的表或对象。请检查 sysobjects。[SQLSTATE 42S02]
我检查了 sysobjects 并看到列出了表名。select object_name(2137058649) 返回 CMS_InfoObjects6。select object_id('CMS_InfoObjects6') 返回 null。select object_id(object_name(2137058649)) 也返回 null。
我可以在 EM 中看到该表,并且当使用完全限定名称(所有者不是 dbo)时可以在 QA 中从中选择 *。
dbcc checkdb 没有返回任何错误。
声明@name varchar(500)设置@name = object_name(2137058649)dbcc checktable(@name)
返回“找不到名为‘CMS_InfoObjects6’的表或对象。请检查 sysobjects。”
我很困惑。
答案1
在您的变量中,您没有包含架构。如果对象不在默认架构中(例如在本例中,您说它不是 dbo),那么您必须将完全限定名称传递给 DBCC CHECKTABLE。查看联机丛书页面底部的该命令的示例脚本:
http://msdn.microsoft.com/en-us/library/ms174338.aspx
您需要修改 Kimberly 的脚本以包含该架构。(有趣的是,我们说话的时候她正在我面前上课,哈哈哈。)