Как изменить имя схемы таблицы во всех хранимых процедурах - PullRequest
5 голосов
/ 19 сентября 2008

Я знаю, как изменить схему таблицы в SQL Server 2005:

ALTER SCHEMA NewSchama TRANSFER dbo.Table1

Но как я могу проверить и / или изменить хранимые процедуры, использующие старое имя схемы?

Извините, я имею в виду: Есть хранимые процедуры, которые имеют старое имя схемы таблицы в sql хранимой процедуры ... Как я могу редактировать все хранимые процедуры, которые имеют dbo.Table1 в теле процедуры ...

Ответы [ 4 ]

1 голос
/ 19 сентября 2008
  • Используйте Задачи> Создать сценарии в SSMS, чтобы предоставить серию сценариев Create Proc.
  • Используйте команду «Найти и заменить» ( Alt - H ), чтобы изменить «Создать» на «Изменить»
  • Используйте F & R , чтобы изменить 'dbo.Table1' на 'dbo.Table2'
  • Затем выполните ( F5 ), чтобы изменить все затронутые SP.

Простой, но эффективный.

0 голосов
/ 09 августа 2017

Например, я создал таблицу отчетов, по умолчанию ей будет назначена схема dbo, теперь, если я хочу изменить схему таблицы отчетов, сначала я создам новую схему с именем Reporting:

CREATE SCHEMA Reporting

затем я выполню приведенный ниже скрипт для изменения схемы таблицы отчетов с dbo на Reporting:

ALTER SCHEMA Reporting TRANSFER dbo.Reports 

ИЛИ для лучшего понимания:

ALTER SCHEMA 'newSchema' TRANSFER 'oldSchema'.'table'
0 голосов
/ 05 марта 2010

ОБЪЯВИТЬ @SearchObject VARCHAR (100)

SET @SearchObject = 'searchable_table_name' - замените 'searchable_table_name' на имя таблицы, по которой вы хотите искать

SELECT sc.name [Поиск объекта], so.name [Контейнерный объект],
CASE so.xtype КОГДА 'U' THEN 'Table' КОГДА 'P' THEN 'Хранимая процедура' КОГДА «F», ТО «Пользовательская функция» ELSE «Другое» КОНЕЦ как [Тип объекта контейнера]

ОТ sysobjects so

INNER JOIN syscolumns sc ON so.id = sc.id

ГДЕ sc.name LIKE '%' + @SearchObject + '%' И so.xtype IN ('U', 'P', 'F') - U: таблица, P: хранимая процедура, F: пользователь определенные функции (udf)

ЗАКАЗАТЬ [Контейнерный объект] ASC

- Показать хранимые процедуры, которые содержат запрошенное имя таблицы.

Выбрать текст из системных комментариев, где текст, такой как '% from' + @SearchObject + '%'

(Выбрать идентификатор из системных объектов, где type = 'P' и name = '')

- Показать содержимое определенной хранимой процедуры (найдена сверху)

- Exec sp_helptext 'DeleteAssetByID'

0 голосов
/ 19 сентября 2008

Получите список зависимых объектов, щелкнув правой кнопкой мыши таблицу, прежде чем изменить схему, а затем посмотрите, что зависит от таблицы, составьте список, а затем измените их. Однако всегда существует вероятность того, что вы что-то упустите, потому что возможно нарушить зависимости, которые отслеживает сервер SQL.

Но лучшим способом было бы записать базу данных в файл, а затем выполнить поиск по имени таблицы, составить список всех sprocs, где его необходимо изменить, и затем добавить их в скрипт для изменения. Схема таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...