В приведенном ниже сценарии я пытаюсь импортировать сотни процедур в другую базу данных.
Решение: SQL Server
Источник
- СЕРВЕР: A
- БАЗА ДАННЫХ: Apple
- ПРОЦЕДУРЫ: SP1, SP2, SP3 ... SP100
Направление
- СЕРВЕР: B
- БАЗА ДАННЫХ: Orange
Первым делом я нашел только несуществующие процедуры по сравнению с обеими базами данных.
Для этого я использовал INFORMATION_SCHEMA.ROUTINES
для каждой базы данных.и сравнил в Excel.
После нахождения списка процедур для импорта я захотел импортировать все процедуры сразу.
Однако, если я создаю процедуру в однострочном тексте, он будетСохраните одну строку с нулевой видимостью.
Итак, я использовал sp_helptext
для копирования по каждой строке.Затем создал небольшой запрос, как показано ниже:
create table #proceduretext (runquery varchar(max))
insert into #proceduretext
exec sp_helptext 'SP1'
insert into #proceduretext select 'go'
insert into #proceduretext
exec sp_helptext 'SP2'
insert into #proceduretext select 'go'
insert into #proceduretext
exec sp_helptext 'SP3'
insert into #proceduretext select 'go'
.
.
.
insert into #proceduretext
exec sp_helptext 'SP100'
insert into #proceduretext select 'go'
Затем выполните выбор из временной таблицы, вставьте результат, запустите.
Однако выше все равно было недостаточно.
Пожалуйстапомогите с вопросами ниже:
Есть ли способ использовать INFORMATION_SCHEMA.ROUTINES
для связанных серверов?
Если есть ответ на вопрос 1Как я могу выполнить цикл ниже запроса для всех отсутствующих процедур?
insert into #proceduretext
exec sp_helptext 'SP100'
insert into #proceduretext select 'go'