Visual Studio 2010データベースプロジェクトを使用して複数のデータベースインストールに変更を展開するシナリオがありますが、特定のデータベースでは、そのコピーから一連のビューを除外したいと考えています。ビルド構成を使用して、これらのビューをデプロイから除外する方法はありますか?
2 に答える
最終的に、デプロイ中に触れてはならないオブジェクトを指定する sqlcmd 変数を使用して制御される、カスタムのデプロイ プラン修飾子を作成しました。各データベース プロジェクト構成は、これらの変数の異なるセット (.sqlcmdvars ファイル) を参照する場合があります。これは、プロジェクト プロパティの [展開] タブで設定できます。
プラン修飾子は、デプロイメント プランを検査し、無視する必要があるオブジェクトを作成/変更/削除する手順を削除します。これを使用して、データ ファイル (さまざまなステージング環境で異なる名前を持つ)、いくつかのバックアップ テーブル、および DB プロジェクトに保持しないいくつかの種類のオブジェクト (ユーザー、ロール メンバーシップ、データベース レベルのアクセス許可) を無視します。この機能は、スキーマ比較構成 (無視されるオブジェクト タイプ) に似ています (ただし、よりきめ細かく) が、デプロイ中に機能します (VSDBCMD を使用する場合も同様です)。
「カスタム デプロイメント プランの修飾子を作成する」部分は大変な作業のように聞こえるかもしれませんが、実際には非常に単純で、学習とテストの部分を含めて 1 日もかかりませんでした。MSDNには非常に役立つウォークスルーがあります。
複合プロジェクトを作成してみましたか?私はこのシナリオを自分で実装していませんが、次のことができるようです。
- すべてのデプロイメントに必要なコアオブジェクトで構成されるproject1を作成します。
- 一部のデプロイメントに必要なビューのセットで構成されるproject2を作成します。
- project2にproject1への参照を追加します。
したがって、project1をデプロイする場合、ビューは含まれず、project2をデプロイする場合、ビューとコアオブジェクトが含まれます。
次のMicrosoftリンクをご覧ください。特に「複合プロジェクトの使用と制限」というタイトルのセクション