SQL 2000 中的 Sysobjects 问题

SQL 2000 中的 Sysobjects 问题

某个表有问题。正在使用 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 的脚本以包含该架构。(有趣的是,我们说话的时候她正在我面前上课,哈哈哈。)

相关内容