2010-09-08 3 views
0

Как выполнить одну хранимую процедуру внутри другой хранимой процедуры?Вызов одной хранимой процедуры внутри другой хранимой процедуры на разных серверах

ПРИМЕЧАНИЕ: Оба Хранится Reside Порядок действий в различных серверах

+0

Я предполагаю, что S.P является «хранимой процедурой»? –

+0

yes u are right – banupriya

ответ

1

Самый простой, если вы можете на вашей системе (они должны быть linked - нажмите на ссылку для получения информации о связывании серверов):

EXEC [RemoteServer].DatabaseName.ObjectOwnerName.StoredProcedureName 

Посмотрите here для получения дополнительной информации.

Кроме того, для того, чтобы уйти от имен серверов с жестким кодированием, посмотрите на Paul's answer here с синонимами.

+0

Скобки вокруг имени удаленного сервера необходимы только в том случае, если имя содержит недопустимые идентификационные символы, как и любое другое имя в SQL. Я вижу это много, где я работаю, потому что у нас есть много серверов с дефисами в имени, для которых требуются скобки, поэтому люди в конечном итоге используют их для всех имен серверов, что является ненужным уродством, IMO. –

+0

См. Мой ответ, чтобы отвлечь имя сервера от хранимой процедуры. Таким образом, вы можете переместить код между средами и не изменять его. –

+0

Кроме того, вторая-последняя часть является только владельцем базы данных (dbo), если хранимая процедура, о которой идет речь, принадлежит владельцу базы данных. В большинстве проектов это делает, но более правильная спецификация будет ObjectOwnerName. –

1

В дополнение к ответу @Kyles вы можете добавить synonym, чтобы удалить необходимость в более длинной/связанной структуре. Это абстрагирует сервер, на который ссылаются. Таким образом, вы можете переместить SP из UAT в LIVE, и код не изменится. Синоним в двух средах будет настроен на каждом сервере, чтобы правильно ссылаться на другой сервер в этой среде.

+0

Синонимы должны быть лучшей практикой, жесткое кодирование 4-х частей - это просто запрос на неприятности. +1 – user404463

+0

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

Смежные вопросы