
Возникла проблема с определенной таблицей. Использовал скрипт Кимберли Трипп для перестроения индексов на основе уровня фрагментации. Задание завершилось с ошибкой:
Msg 2501, Sev 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 и могу выбрать * из нее в QA при использовании полного имени (владелец не dbo).
dbcc checkdb не возвращает ошибок.
объявить @name varchar(500) установить @name = object_name(2137058649) dbcc checktable (@name)
возвращает «Не удалось найти таблицу или объект с именем 'CMS_InfoObjects6'. Проверьте sysobjects».
Я в замешательстве.
решение1
В вашей переменной вы не включаете схему. Если объект не находится в схеме по умолчанию (как в этом случае, когда вы сказали, что это не dbo), то вам нужно передать полное имя в DBCC CHECKTABLE. Ознакомьтесь с примерами скриптов в нижней части страницы Books Online для этой команды:
http://msdn.microsoft.com/en-us/library/ms174338.aspx
Вам нужно будет изменить сценарий Кимберли, чтобы включить схему. (Забавно, она ведет занятие прямо передо мной, пока мы разговариваем, хахаха.)