在SQL 2000中的Sysobjects问题

对某个表有问题 正在使用Kimberly Tripp的脚本来基于碎片级别重build索引。 作业失败,出现此错误:

Msg 2501,Sev 16:找不到名为“CMS_InfoObjects6”的表或对象。 检查sysobjects。 [SQLSTATE 42S02]

我检查了sysobjects并查看列出的表名。 selectobject_name(2137058649)将返回CMS_InfoObjects6。 selectobject_id('CMS_InfoObjects6')返回null。 selectobject_id(object_name(2137058649))也会返回null。

我可以在EM中查看表格,并可以在QA中使用完全限定名称(所有者不是dbo)从中select*。

dbcc checkdb不返回任何错误。

declare @name varchar(500)set @name = object_name(2137058649)dbcc checktable(@name)

返回“无法find名为”CMS_InfoObjects6“的表或对象,请检查sysobjects。

我很困惑。

在你的variables中,你不包括模式。 如果对象不在默认架构中(如在这种情况下,您说的不是dbo),那么您必须将完全限定的名称传递给DBCC CHECKTABLE。 查看该命令的联机丛书页面底部的示例脚本:

http://msdn.microsoft.com/en-us/library/ms174338.aspx

您需要修改Kimberly的脚本以包含模式。 (这很有趣,当我们说话的时候,她在我面前教课,哈哈哈。)