sql 2000 中的 Sysobjects 問題

sql 2000 中的 Sysobjects 問題

特定表有問題。正在使用 Kimberly Tripp 的腳本根據碎片層級重建索引。作業失敗並出現以下錯誤:

訊息 2501,嚴重性 16:找不到名為「CMS_InfoObjects6」的表或物件。檢查系統物件。 [SQLSTATE 42S02]

我檢查了 sysobjects 並看到列出的表名。選擇 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 的腳本以包含該架構。 (有趣的是,我們說話的時候她正在我面前上課,哈哈哈。)

相關內容