Вот проблема, с которой я столкнулся. Я пытаюсь создать хранимый процесс, который будет развернут в средах DEV, QA и PROD. Из-за строгих требований к процессу развертывания я должен убедиться, что мой процесс работает одинаково во всех трех средах и должен работать (конечно!). Проблема в том, что этот процесс ссылается на таблицу в другой базе данных. В DEV и QA это нормально, потому что база данных находится на одном сервере, однако в PROD соответствующая база данных расположена на отдельном сервере. Ниже приведен фрагмент кода из моего процесса, который пытается решить различные проблемы среды:
IF @@SERVERNAME<>'Production'
BEGIN
select distinct m.acct_id
from l_map m (nolock)
join #llist ll on ll.acct_id = m.acct_id
where ll.acct_id not in (select l_number from [OTHERDATABASE].[dbo].[OTHERTABLE] where lmi_status_code not in (select item from #ruleItems))
END
ELSE
BEGIN
select distinct m.acct_id
from l_map m (nolock)
join #llist ll on ll.acct_id = m.acct_id
where ll.acct_id not in (select l_number from [OTHERSERVER].[OTHERDATABASE].[dbo].[OTHERTABLE] where lmi_status_code not in (select item from #ruleItems))
END
Мой процесс вызывается из другого процесса. Когда я тестирую вышеупомянутую логику напрямую, я получаю ожидаемые результаты. Однако, когда я пытаюсь протестировать его в контексте в DEV или QA (из proc верхнего уровня), я получаю сообщение об ошибке, что [OTHERSERVER] не может быть найден. Я не могу (и не должен) создавать связанный сервер в DEV и QA, но мне нужно иметь возможность использовать связанный сервер в среде PROD. Кто-нибудь знает, как этого добиться?