我使用Octopus deploy和DacPac在同一台服务器上两次部署数据库。 它们具有不同的名称并已成功部署。 只有在发布命令中,我为它们赋予相同变量的不同值,但它们都使用第二个值。
Deploy.ps1:
print 'deploying first'
& SqlPackage.exe /a:Publish /sf:$DacPacFile /tcs:$ConnectionString /v:SchemaName="First"
print 'deploying second'
& SqlPackage.exe /a:Publish /sf:$DacPacFile /tcs:$ConnectionString /v:SchemaName="Second"
最终都使用值Second
。
所以似乎第二个以某种方式覆盖了第二个。有一个postscript在文本中打印SchemaName的值:using '$(SchemaName)'
控制台打印输出依次如下:
deploying first
using Second
deploying second
using Second
SQLCMD变量的默认值是Second,所以我将其更改为Third,并忽略默认值,应该是。
修改
我意识到它创建了一个在两个部署中使用的dacpac文件。这对变量的使用方式很重要。因为它们用于在部署中包含其他.sql文件。
所以我每次发布都需要一个dacpac文件。
答案 0 :(得分:0)
我正在使用将要执行的变量dynamically load in different scripts。但是我应该直接在脚本中使用变量来确定if-else样式的行为。否则,在dacpac文件中使用变量get。