Как получить актуальный скрипт хранимой процедуры на другом сервере? - PullRequest
0 голосов
/ 03 марта 2020

Я использую SQL Server 2017. Я связал сервер \ базу данных с другой моей основной базой данных. Итак, если я выполню запрос, приведенный ниже, он сработает и принесет мне правильные данные:

use [myMainServer].[myMainDatabase] GO

...
Select * from [myOtherServer].[myOtherDatabase].dbo.[myTable]

Что я хочу сделать, это получить фактический сценарий хранимой процедуры из связанной базы данных. Предположим, у меня есть хранимая процедура: sp_GetNumbers , тогда я могу получить ее содержимое, если я выполню приведенный ниже код на самом связанном сервере:

SELECT OBJECT_DEFINITION(OBJECT_ID('sp_GetNumbers'))

Однако мне не удалось это сделать это из моей основной базы данных. Я пробовал ниже, но не работает.

SELECT OBJECT_DEFINITION(OBJECT_ID('[myOtherServer].[myOtherDatabase].sp_GetNumbers'))

Мой вопрос: Как получить сценарий хранимой процедуры на SQL сервере B ([myOtherServer].[myOtherDatabase]), запустив запрос на SQL сервере A ([myMainServer].[myMainDatabase]) * * 1016

1 Ответ

2 голосов
/ 03 марта 2020

Функции объекта задаются контекстом c, поэтому он не будет работать, но вы можете использовать системные представления. Как то так:

SELECT [definition] 
from [myOtherServer].[myOtherDatabase].sys.sql_modules m 
inner join [myOtherServer].[myOtherDatabase].sys.objects o
on m.[object_id] = o.[object_id]
where o.[name] = 'sp_GetNumbers'
...