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

In a SQL Server database project, how do I dynamically reference an Oracle linked server used in a view which uses OpenQuery?

我在一个数据库项目中有两个视图,其中 OPENQUERY 一个 Oracle LinkedServer。当我发布到生产环境时,Oracle 链接服务器需要命名为 "OracleBI"。当我发布测试Oracle链接服务器需要命名为"OracleTestBI"。我该如何实现?

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

我已经尝试创建骨架视图,然后使用 post 部署脚本更改视图,但不允许更改视图,'incorrect syntax near ALTER.' 在批处理中......

我尝试在 table 函数上使用 select 语句创建视图。创建骨架 table 函数,然后在 post 部署脚本上更改函数,但不允许更改语句,批处理中 'incorrect syntax near ALTER.' .....

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

的引用未解决

我的 Post 部署脚本调用其他脚本,当我说我向 post 部署脚本添加了一个更改脚本时,我真正做的是在 post 部署脚本。我的 post 部署脚本如下所示:

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

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