Как изменить имя схемы таблицы во всех хранимых процедурах

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

ALTER SCHEMA NewSchama TRANSFER dbo.Table1 

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

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

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

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

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

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

DECLARE @SearchObject VARCHAR (100)

SET @SearchObject = 'searchable_table_name' – изменить 'searchable_table_name' на имя таблицы, что вы хотите найти

SELECT sc.name [Объект поиска], so.name [Контейнерный объект],
CASE so.xtype WHEN 'U' THEN 'Таблица' WHEN 'P' THEN 'Сохраненная процедура' WHEN 'F' THEN 'Пользовательская функция' ELSE 'Other' END as [Тип объекта контейнера]

FROM sysobjects так

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

WHERE sc.name LIKE '%' + @SearchObject + '%' AND so.xtype IN ('U', 'P', 'F') – U: Таблица, P: Сохраненная процедура, F: Пользовательские функции ( UDF)

ORDER BY [Контейнерный объект] ASC

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

Выберите текст Из системных сообщений Где текст типа «% from» + @SearchObject + '%'

(Выберите id Из sysobjects Где type = 'P' и name = '')

– Отображение содержимого определенной хранимой процедуры (см. Выше)

–Exec sp_helptext 'DeleteAssetByID'

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

 CREATE SCHEMA Reporting 

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

 ALTER SCHEMA Reporting TRANSFER dbo.Reports 

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

 ALTER SCHEMA 'newSchema' TRANSFER 'oldSchema'.'table' 
Давайте будем гением компьютера.