有没有办法在没有连接字符串

时间:2017-07-03 19:43:52

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

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

我通过发送args如下来尝试使用sqlpackage.exe

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

这很好用。到目前为止,我通过[Microsoft.SqlServer.DacFx.x64]向DacServices添加一个依赖项来管理,但是这种无法生成没有连接字符串的脚本迫使我通过[Microsoft.Data来添加对SQLPackage.exe的依赖。 Tools.Msbuild]太

DacServices的构造函数都需要ConnectionString

还有其他人遇到过类似情况和解决方案吗?

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

1 个答案:

答案 0 :(得分: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)

相关问题