覆盖SSDT发布配置文件ConnectionString

时间:2019-07-23 14:30:08

标签: sql-server jenkins continuous-integration sql-server-data-tools sqlpackage

我正在使用以下命令来生成以使用SSDT发布数据库更改:

"C:\Program Files\Microsoft SQL Server\150\DAC\bin\SqlPackage.exe" /Action:Publish /sf:DB.dacpac /Profile:publish.xml

我想提供数据库连接字符串作为参数,而不是使用publish.xml中的硬编码连接字符串。无论如何,我可以覆盖它吗?

我尝试过:

"C:\Program Files\Microsoft SQL Server\150\DAC\bin\SqlPackage.exe" /Action:Publish /sf:DB.dacpac /Profile:publish.xml /TargetConnectionString:$ConnectionString 

其中$ ConnectionString是Jenkins的参数。但是,它仍然使用publish.xml中的ConnectionString。

1 个答案:

答案 0 :(得分:4)

我快速浏览了带有反射器(Microsoft.Data.Tools.Schema.CommandLineTool.ValidationUtil)的源代码,结果是从命令行读取了TargetConnectionString,然后发布配置文件中的值被覆盖价值-恐怕无法改变。

有趣的是,它具有来自/ TargetConnectionString或发布配置文件的连接字符串后,便应用了/ TargetDatabaseName之类的各个属性,因此我认为(未经测试,但从代码中看起来不错),如果您不传递/ TargetConnectionString而是传递各个组件,例如:

/ TargetUser,/ TargetPassword,/ TargetDatabaseName,/ TargetServerName等。

然后我认为它将覆盖发布配置文件中的连接字符串,这很难阅读,所以让我知道您的情况吧!

编辑