Неверное отношение имя_объекта и определение в sys.sql_modules и sys.objects - PullRequest
1 голос
/ 28 января 2020

Я выполнил следующий запрос

SELECT sm.object_id,
       v1.object_name,
       o.type,
       o.type_desc,
       sm.definition
FROM sys.sql_modules sm
     CROSS APPLY (VALUES (OBJECT_NAME(sm.object_id))) v1 (object_name)
     JOIN sys.objects o ON sm.object_id = o.object_id;

И есть три объекта с неправильным отношением между object_name и definition. Нет соответствия, нет соответствия между именем и определением, на которое оно ссылается.

enter image description here

Похоже, что эти таблицы не отслеживали удаление или изменения в названии и определениях этих трех объектов.

Как можно дать эту ситуацию? Как я могу "обновить" эти таблицы или исправить это должным образом?

Query results updated

1 Ответ

1 голос
/ 28 января 2020

Это побочный эффект от использования "sp_rename".
Эти объекты будут работать нормально, но для обновления sh их определений вам необходимо их воссоздать.

С sp_rename документация:

Переименование хранимой процедуры, функции, представления или триггера не изменит имя соответствующего объекта ни в столбце определения представления каталога sys.sql_modules, ни полученном с использованием встроенной OBJECT_DEFINITION -в функции. Поэтому мы рекомендуем не использовать sp_rename для переименования этих типов объектов. Вместо этого удалите и заново создайте объект с новым именем.

...