我有一个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来克服此问题?
答案 0 :(得分:1)
有一个静态版本的GenerateDeployScript不需要连接字符串,因为你没有为静态方法调用构造函数,在msdn文档中它不是很清楚但看起来像是“S”浮动意味着它是静态的:)
`public static string GenerateDeployScript(DacPackage sourcePackage,DacPackage targetPackage,string targetDatabaseName,DacDeployOptions options = null)