2017-07-03 1 views
0

私はSource DacPacとTarget DacPacを持っています。 powershellを使用して、私は両方を比較してアップグレードスクリプトを生成したいと思います。これは、有効な接続文字列が存在する限り、DacServicesを使用するすべてのケースで簡単です。しかし、私のCDパイプラインでは、最終的な接続文字列を知りませんし、知りたいと思っていません。そして私が望むのは、スクリプトがSQLを生成することだけです。接続文字列なしでSSDT DacServicesを呼び出す方法はありますか

私は

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

をたどり、これは正常に動作として引数を送信することにより、sqlpackage.exeでこれを試してみました。これまでは[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オプション=ヌル)そのポインタエドため

+0

感謝を...です.. – cryptomatt

関連する問題