我正在使用以下命令来生成以使用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。
答案 0 :(得分:4)
我快速浏览了带有反射器(Microsoft.Data.Tools.Schema.CommandLineTool.ValidationUtil)的源代码,结果是从命令行读取了TargetConnectionString,然后发布配置文件中的值被覆盖价值-恐怕无法改变。
有趣的是,它具有来自/ TargetConnectionString或发布配置文件的连接字符串后,便应用了/ TargetDatabaseName之类的各个属性,因此我认为(未经测试,但从代码中看起来不错),如果您不传递/ TargetConnectionString而是传递各个组件,例如:
/ TargetUser,/ TargetPassword,/ TargetDatabaseName,/ TargetServerName等。
然后我认为它将覆盖发布配置文件中的连接字符串,这很难阅读,所以让我知道您的情况吧!
编辑