10

このソリューションに固有のオブジェクトを含む *.sqlproj プロジェクトを使用した VS2013 ソリューションがあります。問題は、これが他のプロジェクトでも共通のデータベースであることです。

私の問題は、他のオブジェクトに影響を与えることなく、スキーマ内の変更をデータベースに自動的に展開することです。デフォルトでは、DACPAC はデータベース全体を更新しますが、これは私の場合は望ましくありません。

展開コントリビューター http://msdn.microsoft.com/en-us/library/dn268597(v=vs.103).aspxを書き込もうとしましたが、ソリューションフォルダー内に配置する必要があるため、ソリューションフォルダー内に配置する方法がないようですSQL サーバーの Program Files サブフォルダーに配置します。

Bamboo を使用して展開パッケージを作成し、アプリケーションは Azure SQL データベースを使用して Microsoft Azure でホストされています。

DACPAC またはその他の自動手段を使用して、自分のスキーマ内でのみ DB の変更をデプロイする方法はありますか?

4

2 に答える 2

6

次の 2 つのオプションがあります。

  1. SqlPackage.exe とその他の DAC DLL を、ソリューション内のフォルダー、または展開チームが管理するフォルダーにコピーします。コントリビューター DLL も同じフォルダーにコピーします。次に、展開するときに、その場所から SqlPackage.exe を使用していることを確認してください。Microsoft.Data.Tools.Schema.Sql.dll と同じフォルダー内のすべての DLL が拡張機能についてチェックされるため、この方法を使用して、システム全体の場所にインストールする必要なく、展開中にコントリビューターを含めることができます。

  2. dacpac から他のスキーマに関連するオブジェクトを除外し、DropObjectsNotInSource = false でデプロイします。これは、削除したオブジェクトをドロップしないため理想的ではありませんが、ビルド時またはデプロイ チームに渡す前に実行できるという利点があります。

この基本的なトピックは、私が書いたAPI チュートリアルでカバーされていることに注意してください。このサンプル プロジェクトには、そのいくつかのサンプルが含まれています。オプション #1 は既に記述されているようですが (チュートリアルには、変更/削除ではなく、追加のみをブロックする簡易版があります)、それらの比較を確認できます。また、サンプルでは、​​API を使用して発行する方法 (これは SqlPackage.exe を使用することに直接対応します) と、寄稿者の動作を簡単にテストおよび検証する方法も示しています。

于 2014-05-09T17:36:48.670 に答える