sql-server - 覆盖 SSDT 发布配置文件 ConnectionString

标签 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。

最佳答案

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

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

/TargetUser、/TargetPassword、/TargetDatabaseName、/TargetServerName 等

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

编辑

关于sql-server - 覆盖 SSDT 发布配置文件 ConnectionString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57166444/

相关文章:

sql - 按先前组减去先前值 - SQL Server

jenkins swarm 插件 : Unable to connect to master. 连接被拒绝

jenkins - 为什么 Docker 在将图像推送到私有(private)注册表时会重置连接?

vb6 - VB6 可以使用巡航控制吗?

jenkins - 如何在 Jenkins 中编辑凭据?

mysql - (SQL) 联合与附加数据的组合

sql-server - 事务级别、nolock/readpast 和并发性

sql-server - 更改表 'DEFAULT' 未设置默认值 - SQL Server

git - 如何在 Jenkins 执行 shell 中捕获错误?

continuous-integration - 将 GerritHub 与 GitHub Actions 结合使用