В проекте базы данных SQL Server как динамически ссылаться на связанный сервер Oracle, используемый в представлении, использующем OpenQuery? - PullRequest
1 голос
/ 10 апреля 2019

У меня есть два представления в проекте базы данных, который ОТКРЫВАЕТ Oracle LinkedServer.Когда я публикую в производство, связанный сервер Oracle должен называться «OracleBI».Когда я публикуюсь для тестирования, связанный сервер Oracle должен иметь имя «OracleTestBI».Как мне это сделать?

Я пытался использовать переменные SQLCMD и подавлять предупреждения T_SQL SQL71501.Ошибки не будут подавлены.

Я попытался создать скелетное представление, а затем изменить представление с помощью сценария после развертывания, но изменение не было разрешено, «неверный синтаксис рядом с ALTER».в пакете .....

Я попытался создать представление с помощью оператора select для табличной функции.Создание скелетной табличной функции, а затем ее изменение в сценарии после развертывания, но оператор alter был запрещен, «неправильный синтаксис рядом с ALTER».в пакете .....

Я попытался создать дополнительный проект базы данных для связанного сервера с именами тестового и расширенного связанных серверов, добавил его в качестве ссылки, а затем использовал переменную SQLCMD для переключения между связанным серверомnames, "... View: [compass] .vwBIInvForecastBegVolume имеет неразрешенную ссылку на объект [$ (OracleServer)]"

Мой сценарий после развертывания вызывает другие сценарии, и когда я говорю, я добавил сценарий изменения всценарий после развертывания, я действительно добавил ссылку на сценарий в сценарий после развертывания.Мой сценарий развертывания после публикации выглядит следующим образом:

PRINT 'Create Environment Users'
------------------------------------------------------------
IF '$(TargetEnv)' = 'PROD'
BEGIN
    :r .\PostDeployment\CreateEnvironmentUsers.Prod.sql
END
ELSE
IF '$(TargetEnv)' = 'TEST'
BEGIN
    :r .\PostDeployment\CreateEnvironmentUsers.Test.sql
END
ELSE
BEGIN
    :r .\PostDeployment\CreateEnvironmentUsers.Local.sql
END

1 Ответ

0 голосов
/ 10 апреля 2019

Да. Database Project Solution не поддерживает изменение утверждений. Вы должны проверить скрипт с помощью оператора Create. Во время развертывания DACPAC создаст оператор изменения во время выполнения. Добавьте сценарий, чтобы проверить, существует ли представление, затем удалите его и создайте заново.

...