【问题标题】:Is there a way to call SSDT DacServices without a connectionstring有没有办法在没有连接字符串的情况下调用 SSDT DacServices
【发布时间】:2017-07-03 19:43:52
【问题描述】:

我有一个源 DacPac 和一个目标 DacPac。使用 powershell 我想比较两者并生成升级脚本。只要存在有效的连接字符串,这本身对于所有使用 DacServices 的情况都很简单。但是,对于我的 CD 管道,我不知道最终的连接字符串,也不想知道。我想要的只是让脚本生成 SQL。

我用 sqlpackage.exe 尝试了这个,通过发送 args 如下

$args = @( "/a:Script", "/sf:$PathToDacpacSource", "/tf:$PathToDacpacTarget", "/op:$outputFile", "/tdn:$TargetDatabaseName" )

这很好用。到目前为止,我通过 [Microsoft.SqlServer.DacFx.x64] 仅向 DacServices 添加了一个依赖项,但是无法在没有连接字符串的情况下生成脚本,这迫使我通过 [Microsoft.Data. Tools.Msbuild] 也是

DacServices 的构造函数都需要ConnectionString

有没有其他人遇到过类似的情况和解决办法?

或者您是否在部署端专门使用 SQLPackage 来解决此问题?

【问题讨论】:

    标签: powershell msbuild sql-server-data-tools


    【解决方案1】:

    有一个静态版本的 GenerateDeployScript 不需要连接字符串,因为您不需要为静态方法调用构造函数,在 msdn 文档中不是很清楚,但看起来像的“S”是浮动意味着它是静态的:)

    https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dac.dacservices.generatedeployscript(v=sql.120).aspx#M:Microsoft.SqlServer.Dac.DacServices.GenerateDeployScript%28Microsoft.SqlServer.Dac.DacPackage,Microsoft.SqlServer.Dac.DacPackage,System.String,Microsoft.SqlServer.Dac.DacDeployOptions%29

    ` public static string GenerateDeployScript(DacPackage sourcePackage, DacPackage targetPackage, string targetDatabaseName, DacDeployOptions options = null )

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 2018-11-10
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      • 1970-01-01
      相关资源
      最近更新 更多