Переименуйте хранимую процедуру в SQL Server

Вы могли переустановить resolvconf для восстановления конфигурации по умолчанию:

sudo apt-get install --reinstall resolvconf

Другая идея была бы, удалите "resolvconf" и затем установите:

sudo apt-get remove --purge resolvconf && sudo apt-get install resolvconf
24
задан Peter Oehlert 2 December 2011 в 09:40
поделиться

5 ответов

Согласно docs , "P" - неправильный вариант. Вам следует попробовать «ОБЪЕКТ», так как это кажется наиболее близким к тому, что вы пытаетесь сделать. Но вы должны прислушаться к этому предупреждению ...

Изменение любой части имени объекта может сломать скрипты и сохранить процедуры. Мы рекомендуем вам не используйте этот оператор для переименования сохраненного процедуры, триггеры, определяемые пользователем функции или представления; вместо этого отбросьте объект и воссоздайте его с новым имя.

Также (с той же страницы MSDN ):

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

17
ответ дан 28 November 2019 в 22:32
поделиться

Просто опустите параметр @objtype (значение по умолчанию - null), и он будет работать.

EXEC sp_rename 'sp_MyProc', 'sp_MyProcName'

Вы получите следующее предупреждение , но процедура будет переименована в

. Внимание: изменение любой части имя объекта могло нарушить скрипты и хранимые процедуры.

Как было сказано другими, вы должны отбросить и воссоздать процедуру.

49
ответ дан 28 November 2019 в 22:32
поделиться

sp_rename не поддерживает процедуры:

Изменяет имя созданного пользователем объект в текущей базе данных. Эта объект может быть таблицей, индексом, столбцом, псевдоним типа данных или Microsoft .NET Среда CLR Framework (CLR) определяемый пользователем тип .

Просто создайте новую процедуру с тем же телом и новым именем, а затем отбросьте старую.

2
ответ дан 28 November 2019 в 22:32
поделиться

Я не уверен насчет переменной @objtype, но знаю, что переименование с помощью sp_rename - это плохо.

Когда вы создаете сохраненную процедуру, запись для нее существует в sys.objects, а определение сохраненной процедуры будет сохранено в sys.sql_modules.

Использование sp_rename изменит только имя в sys.objects, но не в sys.sql_modules, поэтому ваше определение будет неверным.

Лучшее решение - сбросить и воссоздать

1
ответ дан 28 November 2019 в 22:32
поделиться

В дни SQL 2000 было безопаснее DROP / CREATE - SQL использовался для того, чтобы метаданные для процесса не синхронизировались при использовании sp_rename.

Лучший способ узнать, как реализовать такой модный DDL, - это использовать SSMS для переименования объекта, пока прикреплена трассировка профилировщика.

0
ответ дан 28 November 2019 в 22:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: