如何使用不同的变量多次部署数据库

时间:2016-08-12 07:57:07

标签: database variables sql-server-data-tools sqlcmd octopus-deploy

我使用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文件。

1 个答案:

答案 0 :(得分:0)

我正在使用将要执行的变量dynamically load in different scripts。但是我应该直接在脚本中使用变量来确定if-else样式的行为。否则,在dacpac文件中使用变量get。