【问题标题】:Override SSDT publish profile ConnectionString覆盖 SSDT 发布配置文件 ConnectionString
【发布时间】:2019-07-23 14:30:08
【问题描述】:

我正在使用以下命令生成使用 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。

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    编辑

    【讨论】:

    • 有趣,感谢您的检查。我会试一试,然后回复你。
    • 太棒了 :) 可能值得提出一个连接错误,要求它以相反的方式更新文档:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 2015-03-11
    • 1970-01-01
    • 2018-11-29
    • 2019-07-02
    • 1970-01-01
    • 2014-09-28
    相关资源
    最近更新 更多