データベース プロジェクトとサーバー プロジェクトの概要

データベース プロジェクトまたはサーバー プロジェクトを作成してバージョン管理の対象にすることで、組織がデータベース開発を管理するときの効率を高めることができます。 これらのオフライン表現には、データベース (またはサーバー) の別のインスタンスの作成や既存のインスタンスの更新時に使用できるオブジェクト定義、設定、および配置スクリプトが含まれています。

組織のニーズに応じて、プロジェクトの一部を共有することも、複合プロジェクトを作成することもできます。 詳細については、このトピックの「プロジェクトの一部の共有」セクション、または「データベース プロジェクトでの参照の使用」の「参照を使用した複合プロジェクトの作成」セクションを参照してください。

プロジェクトの構造

ソリューション エクスプローラでは、プロジェクトはファイル別に整理して表示されます。 ソリューション エクスプローラに表示される各項目は、保存されたファイルまたはフォルダに対応しています。 一方、スキーマ ビューでは、データベース内のオブジェクトが個別のファイルに定義されているかどうか識別できるように、プロジェクトはオブジェクト別に整理して表示されます。

データベースまたはサーバー プロジェクトには、次の種類のオブジェクトを格納できます。

  • Properties ファイル
    データベースまたはサーバー プロジェクトには、プロパティの値を格納する Properties フォルダが含まれます。 これらの値を変更することで、プロジェクトの配置方法を制御できます。 たとえば、データベース設定、サーバー設定、SQLCMD 変数、データベース アクセス許可などを指定できます。 詳細については、「データベース プロジェクトおよびサーバー プロジェクトのプロパティ ファイル」を参照してください。

  • データ生成計画
    データ生成計画には、配置または更新する予定のデータベースで使用する現実的で典型的なテスト データを生成する方法に関する情報が含まれます。 詳細については、「データ ジェネレータを使用してデータベースのテスト データを生成する」を参照してください。

  • スキーマ比較
    スキーマ比較には、データベース プロジェクトと別のスキーマとの間の比較に関する情報が含まれます。 .scmp ファイルを開き、比較を更新することで、スキーマに対してプロジェクトを再度比較できます。 詳細については、「データベース スキーマを比較および同期する」を参照してください。

  • スキーマ オブジェクト
    スキーマ オブジェクトは、プロジェクト フォルダに格納される .sql ファイルのコレクションで定義されます。 大部分のオブジェクトが、個別のファイルで定義されます。 例外として、テーブル内の列と、ストアド プロシージャまたは関数のパラメータがあります。 列はテーブルの定義内に保存され、パラメータはストアド プロシージャまたは関数の定義内に格納されます。 詳細については、「シナリオ : データベースおよびサーバー オブジェクトの作成および変更」を参照してください。

  • スクリプト
    プロジェクトには、データベースまたはサーバーを管理するために使用するスクリプトに加え、配置前スクリプトと配置後スクリプトも含まれます。 詳細については、「シナリオ: データベース スクリプトの作成および変更」を参照してください。

オブジェクトの設定のインポート

プロジェクトの作成が完了したら、データベース インスタンスまたはスクリプトからオブジェクトと設定をインポートできます。 データベースをインポートするとき、そのオブジェクト定義が検証され、解析できないステートメントは ScriptsIgnoredOnImport.sql ファイルに格納されます。 既に存在しないオブジェクトを参照するオブジェクト定義をインポートする場合は、プロジェクトをビルドおよび配置する前に、これらのエラーを解決しておく必要があります。 たとえば、既に存在しないテーブルを参照するストアド プロシージャをインポートする場合などです。 エラーを解決するには、そのストアド プロシージャを削除します。

大規模なスキーマをインポートする場合は、そのようなエラーの解決に時間がかかることがあります。 ただし、チーム メンバが Database Edition でスキーマを更新するときに、この種類のエラーを新たに追加することはできません。 チーム メンバがオブジェクト定義を変更して保存する際には、変更がすべて検証されます。これにより、エラーを直ちに修正することで、ライブ データベースにこのようなエラーが配置される状況を回避できます。 オブジェクト定義内の警告の解決が完了したら、データベース コードを分析して設計、名前付け、およびパフォーマンスに関する問題を検出することも考慮する必要があります。 詳細については、「スタティック分析によるデータベース コードの改善」を参照してください。

プロジェクトの一部の共有

一連のファイルを複数のプロジェクトで再使用する場合は、プロジェクトの任意の部分を部分プロジェクトとしてエクスポートできます。 この操作を行うと、複数の他のプロジェクトに含めることができる .files ファイルが作成されます。 たとえば、すべてのデータベースを監査するために使用する共通ストアド プロシージャを用意できます。 これらのストアド プロシージャを 1 つのプロジェクトの中に定義し、エクスポートし、他のプロジェクトに含めることができます。 この方法を取ることで、複数のプロジェクトで同じコードを管理する必要がなくなります。

関連するシナリオ

  • データベースのチーム開発の開始
    オブジェクトと設定のオフライン表現を作成し、それをバージョン管理の対象にすることで、データベースの変更を管理できます。

  • 他のデータベースを参照するデータベースのチーム開発の開始
    オブジェクトと設定のオフライン表現を作成し、それをバージョン管理の対象にすることで、データベースの変更を管理できます。 このオフライン表現内で、各種のターゲット環境への配置をサポートするデータベース間参照を定義します。

  • SQLCLR オブジェクトを参照するデータベースのチーム開発の開始
    オブジェクトと設定のオフライン表現を作成し、それをバージョン管理の対象にすることで、データベースの変更を管理できます。 このオフライン表現内で、SQLCLR アセンブリへの参照を追加した後、そのアセンブリ内に定義されたオブジェクトを使用します。

  • 共有サーバー オブジェクトを参照するデータベースのチーム開発の開始
    オブジェクトと設定のオフライン表現を作成し、それをバージョン管理の対象にすることで、データベースの変更を管理できます。 このオフライン表現内で、ログインやキーなどのサーバー オブジェクトの定義を格納する共有サーバー プロジェクトへの参照を追加します。

  • シナリオ : データベース サーバー上のオブジェクトのチーム開発の開始
    オブジェクトと設定のオフライン表現を作成し、それをバージョン管理の対象にすることで、データベース サーバーの変更を管理できます。 サーバー プロジェクトを配置すると、マスタ データベースの内容が更新されます。

  • シナリオ : データベース サーバー エンドポイントのチーム開発の開始
    データベース サーバーのエンドポイントのオフライン表現を作成できます。 このオフライン表現には、HTTP エンドポイント (URL 名前空間)、プロパティ、およびエンドポイントが公開するメソッドが含まれています。

参照

概念

データベースのビルドおよび分離開発環境への配置

データベース プロジェクトの構成とテスト配置の実行

データベースの反復開発の実行

Database Edition の用語の概要

その他の技術情報

チュートリアル (バージョン管理されたデータベース スキーマの作成および更新)