dev*_*per 2 sql-server continuous-integration jenkins sqlpackage sql-server-data-tools
我使用以下命令来生成并使用 SSDT 发布数据库更改:
"C:\Program Files\Microsoft SQL Server\150\DAC\bin\SqlPackage.exe" /Action:Publish /sf:DB.dacpac /Profile:publish.xml
Run Code Online (Sandbox Code Playgroud)
我想提供数据库连接字符串作为参数,而不是使用publish.xml 中的硬编码连接字符串。无论如何我可以覆盖它吗?
我试过:
"C:\Program Files\Microsoft SQL Server\150\DAC\bin\SqlPackage.exe" /Action:Publish /sf:DB.dacpac /Profile:publish.xml /TargetConnectionString:$ConnectionString
Run Code Online (Sandbox Code Playgroud)
其中 $ConnectionString 是来自 Jenkins 的参数。但是,它仍然使用publish.xml 中的ConnectionString。
我使用反射器(Microsoft.Data.Tools.Schema.CommandLineTool.ValidationUtil)快速查看了源代码,发生的情况是从命令行读取 TargetConnectionString,然后发布配置文件中的值覆盖该值 -恐怕这是无法改变的。
有趣的是,在它获得来自 /TargetConnectionString 或发布配置文件的连接字符串后,它会应用单个属性,例如 /TargetDatabaseName 所以我认为(未经测试但从代码看起来不错)如果不传递 /TargetConnectionString 而是传递各个组件,例如:
/TargetUser、/TargetPassword、/TargetDatabaseName、/TargetServerName 等
然后我认为它将覆盖发布配置文件中的连接字符串,它很难阅读,所以让我知道你的进展如何!
编辑
| 归档时间: |
|
| 查看次数: |
997 次 |
| 最近记录: |