在SQL Server数据库项目中,如何动态引用在使用OpenQuery的视图中使用的Oracle链接服务器?

时间:2019-04-09 23:20:45

标签: sql-server visual-studio sql-server-data-tools linked-server

我在OPENQUERY Oracle LinkedServer的数据库项目中有两个视图。当我发布产品时,Oracle链接服务器需要命名为“ OracleBI”。在我发布测试时,需要将Oracle链接服务器命名为“ OracleTestBI”。我该怎么做?

我尝试使用SQLCMD变量并禁止T_SQL警告SQL71501。错误不会抑制。

我尝试创建一个框架视图,然后使用后期部署脚本更改该视图,但不允许更改视图,“ ALTER附近的语法不正确”。 .....

我尝试使用表函数上的select语句创建视图。创建骨架表函数,然后在部署后脚本上更改该函数,但不允许alter语句,“ ALTER附近的语法不正确”。 .....

我尝试为链接服务器创建一个带有测试和生产链接服务器名称的附加数据库项目,将其添加为引用,然后使用SQLCMD变量在链接服务器名称之间进行切换,“ ...查看:[compass] .vwBIInvForecastBegVolume有对对象[$(OracleServer)]“的未解决的引用

我的Post Deployment脚本调用其他脚本,当我说我在后部署脚本中添加了一个更改脚本时,我真正要做的就是在后部署脚本中添加对该脚本的引用。我的后期部署脚本如下所示:

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 :(得分:0)

是的。数据库项目解决方案不支持Alter语句。您必须使用Create语句签入脚本。在部署期间,DACPAC将在运行时创建Alter语句。添加脚本以检查视图是否存在,然后拖放并重新创建。