2017-07-03 21 views
0

我有一個Source DacPac和一個Target DacPac。使用powershell,我想比較兩者並生成升級腳本。對於使用DacServices的所有情況,只要存在有效的連接字符串,本身就很簡單。但是,對於我的CD管道,我不知道最終的連接字符串,我也不想知道。我只想讓腳本生成SQL。有沒有辦法在沒有連接字符串的情況下調用SSDT DacServices

我通過發送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

有一個不需要連接字符串的靜態版本的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

'公共靜態字符串GenerateDeployScript(DacPackage sourcePackage,DacPackage targetPackage,串targetDatabaseName,DacDeployOptions選項= NULL)

+0

感謝您的指針埃德..工作一種享受.. – cryptomatt

相關問題