5

さまざまな環境にデプロイできる出力 dacpac ファイルを生成しようとしています。これまでは、次のようなターゲット パブリッシュを使用して msbuild から直接デプロイしていました。

msbuild dbproject.sqlproj /t:Build;Publish /p:SqlPublishProfilePath=test.publish.xml  /p:UpdateDatabase=True  /p:PublishScriptFileName=test.sql

生成される出力スクリプトのサイズ (UpdateDatabase が true に設定されているため、参照用) は 2.5MB です。

私の新しいアプローチは、プロジェクトをビルドし、dacpac を保存してから、アクション「発行」で sqlpackage を使用してデプロイすることです。この新しいメソッドは、msbuild SqlPublishTask では報告されなかったいくつかの警告を報告しています。
参考までに、次のコマンドを実行しました。

sqlpackage.exe /action:script /outputpath:test.sql /sourcefile:dbproject.dacpac /pr:test.publish.xml

出力スクリプトのサイズは 4.9MB になりました。
報告された特定の警告はここでは問題ではありません。問題はスクリプトが異なることです。私の質問は違いは何ですか?
さらに重要なことに、展開を行うための最良/最も安全な方法はどれですか?

4

1 に答える 1

1

Sqlpackage.exe はより詳細であり、展開中によ​​り多くのオブジェクトが含まれます。オブジェクトの変更中の変更を回避するために、テーブルへのアクセス許可を削除してから、オブジェクトの作成または変更に進みます。
違いは、ターゲット データベースと異なるかどうかに関係なく、すべてのオブジェクトが sqlpackage のスクリプトに含まれていることです。

与えられた警告は最初は問題ではありませんでしたが、sqlpackage メソッドを使用して、一部のストア プロシージャがソリューションに含まれておらず、データベースにのみ含まれていることを発見しました。これらの「孤立した」sp は、展開されているテーブルを参照していたため、テーブルの変更により sp が壊れる可能性があるという警告が表示されています。

于 2015-08-05T10:39:36.303 に答える