データベースのビルドおよびステージング環境または稼動環境への配置

データベース開発者が個々の開発タスクを実行する際に、各開発者は個別の分離開発環境 (サンドボックスと呼ばれる) で作業します。 データベース プロジェクトのテスト済みバージョンをステージング環境または稼動環境に配置する場合のプロセスは、同様ですがいくつか重要な違いがあります。

通常、ステージング サーバーおよび運用サーバーへのアクセスは制限されています。 これらのサーバーには、保持する必要のある他のデータベースが存在する可能性があります。 多くの場合、ターゲット データベースは既に存在し、保存する必要のあるデータが含まれています。 開発環境に配置するときに比べ、データベースを配置する際にサーバー設定を変更する可能性は低くなります。 場合によっては、データベースを配置するアクセス許可があっても、サーバー設定を更新するアクセス許可がないことがあります。

ステージング環境または稼動環境に配置するデータベース プロジェクトの構成

データベース プロジェクトの配置プロパティでは、ステージング環境および運用サーバー環境に一致するように設定を構成できます。 これらの設定は、分離開発環境の他の開発者の設定からは独立しています。 この独立性を維持することによって、他の開発者が変更できないステージング環境および稼動環境のプロジェクト構成を設定できます。 各構成には、ステージング サーバーまたは運用サーバーへのターゲット データベース接続、独自の .sqldeployment ファイル、および独自の .sqlcmdvars ファイルがあります。

また、配置スクリプトを準備しても、実際の配置はスキップするようにステージング設定および運用設定を構成することもできます。 この方法を使用すると、配置スクリプトを確認して、必要に応じて変更してから、ターゲット環境に手動でそのスクリプトを配置できます。

配置構成の詳細

ステージング環境または稼動環境にプロジェクトを配置する前に、以下の問題を考慮する必要があります。

  • ステージング環境または稼動環境は既にセットアップされているため、必要に応じてターゲット データベースの照合順序を使用してください。

  • 毎回データベースを作成し直すことはお勧めしません。データ消失の可能性があるからです。

  • 新しいデータベースを配置する場合、必要に応じてデータベース プロパティを配置できます。 既存のデータベースに更新を配置する場合は、データベースが既に正しくセットアップされているので、通常はデータベース プロパティを配置する必要はありません。

  • 配置プロセスとは異なるステップで既にオブジェクトおよびデータをバックアップしている場合を除き、配置プロセスの一環としてデータベースをバックアップする必要があります。

  • データ損失が発生する可能性がある場合は、配置をブロックすることをお勧めします。更新されるデータベースには、多くの場合、本番データが含まれているからです。

  • データベースにあってデータベース プロジェクトにないオブジェクトに対しては、DROP ステートメントを生成する必要があります。 データベース プロジェクトは、正しいバージョンのステージング スキーマおよび運用スキーマで表す必要があります。 データベースへの更新の配置後にデータを手動で移動する場合は例外です。 この場合、データの移行後までオブジェクトの削除を行いません。

SQL コマンドの変数

ステージング環境または稼動環境への配置時に、その環境に適した値を変数に設定できます。 たとえば、ステージング環境または稼動環境では、開発環境の値とは異なる Service Broker やサービス証明書の値が必要になる場合があります。 ターゲット環境ごとに別々の .sqlcmdvars ファイルを指定すると、配置ターゲットを変更したときに変数の値を変更する必要がありません。 この方法では、MSBuild 変数についても、構成に固有の値を指定するように .sqlcmdvars ファイルを定義する必要がありません。 配置する構成ごとに異なる .sqlcmdvars ファイルを指定できます。

サーバー プロジェクトの配置

データベース プロジェクトには、データベース オブジェクトまたはサーバー オブジェクト、あるいはその両方の定義を含むことができます。 ほとんどの環境では、開発者はデータベース オブジェクトを変更できますが、サーバー オブジェクトを変更できるのはデータベース管理者だけです。 サーバー オブジェクトを個別のプロジェクト (サーバー プロジェクトと呼ばれる) に配置することによって、この制限を適用できます。 次に、管理者だけがサーバー プロジェクトを変更できるようにバージョン管理を制限できます。 ステージング環境または稼動環境では、サーバー プロジェクトおよびそのオブジェクトは、多くの場合、データベース オブジェクトを含むプロジェクトとは別に配置されます。

サーバー プロジェクトは、スキーマ プロジェクトの配置と同じ手順を使用して配置します。

ロールの配置

データベースを配置するすべてのサーバーに、そのデータベースで使用するロールを配置する必要があります。 ステージング サーバーまたは運用サーバーにデータベースを配置する場合、必要なすべてのユーザーを定義し、それらのユーザーを適切なロールに関連付ける必要があります。

コマンド ラインの配置

次の必須コンポーネントがインストールされていれば、Visual Studio Team System Database Edition がインストールされていないコンピュータでも、コマンド プロンプトからデータベース プロジェクトを配置できます。

  • Microsoft .NET Framework Version 3.5 Service Pack 1

  • SQL Server 管理オブジェクト (SMO)

    これらは、SQL Server がインストールされているすべてのコンピュータにインストールされている必要があります。

これらの必須コンポーネントに加えて、以下のファイルも、最初にユニバーサル シリアル バス (USB: Universal Serial Bus) ドライブにコピーするなどの方法で、そのコンピュータに転送する必要があります。

  • データベース プロジェクトのビルド出力 (デバッグまたはリテール)

  • Database Edition の Deploy フォルダの内容

    このフォルダは通常 [Program Files]\VSTSDB\Deploy にあります。

  • SQL Server Compact Edition のアセンブリ

必須コンポーネントをインストールしてファイルを転送したら、データベース プロジェクトを (.dbschema ファイルの形式で) ターゲット データベースに配置できます。

一般的なタスク

次の表は、このシナリオをサポートする一般的なタスクの説明と、これらのタスクを正常に完了する方法の詳細へのリンクを示しています。

タスク

関連するトピック

ビルドおよび配置を開始する : データベース プロジェクトを初めて構成、ビルド、および配置する前に、チーム環境でデータベース プロジェクトをどのように使用するかを理解する必要があります。 また、ビルド プロセスおよび配置プロセスについての理解を深めることができます。 さらに、プロジェクトのビルドと配置の状況を制御するために使用できるすべてのプロパティと設定について学習することもできます。

完了したオブジェクトのみを配置する : 配置またはテストの準備が完了していないデータベース オブジェクトの定義を含むファイルを除外できます。

データベース プロジェクトをビルド プロセス用に構成する : データベース プロジェクトのビルド方法を制御する設定を構成できます。 たとえば、出力パスを指定できます。

データベース プロジェクトを配置用に構成する :

  • ターゲット データベース、配置の詳細を含むファイル、および配置に影響する変数を含むファイルに構成を関連付けることで、任意のビルド構成に応じた配置を構成できます。

  • 配置の詳細を含むファイルを変更することで、配置の詳細を制御できます。

  • 配置ごとに異なる Service Broker またはサービス証明書を使用するように変数をカスタマイズできます。

  • データベースを配置するときにデータベースのプロパティを更新するかどうかと、それらのプロパティに設定する値を制御できます。

データベース プロジェクトをビルドする : 配置の準備を行うために、Visual Studio で、またはコマンド プロンプトから MSBuild を使用して、データベース プロジェクトをビルドできます。

データベース プロジェクトを配置する : データベース プロジェクトは、Visual Studio を使用するか、MSBuild を使用するか、ターゲットのデータベースまたはサーバーを更新する VSDBCMD をコマンド プロンプトで使用することによって配置できます。

問題をトラブルシューティングする : データベース プロジェクトのビルドおよび配置に関する最も一般的な問題をトラブルシューティングする方法についてさらに詳しく学習できます。

関連するシナリオ

  • データベースのチーム開発の開始
    データベース プロジェクトにデータベース スキーマのオフライン表現を作成し、そのプロジェクトをバージョン管理に追加する方法について説明します。

  • 他のデータベースを参照するデータベースのチーム開発の開始
    データベース スキーマのオフライン表現を作成し、他のデータベースへの参照を定義し、配置先の環境の変数に値を指定して、そのプロジェクトをバージョン管理に追加する方法について説明します。

  • SQLCLR オブジェクトを参照するデータベースのチーム開発の開始
    データベース スキーマのオフライン表現を作成し、SQL 共通言語ランタイム (CLR: Common Language Runtime) オブジェクトを含むアセンブリへの参照を定義し、それらの SQLCLR オブジェクトを参照するデータベース オブジェクトを定義して、そのプロジェクトをバージョン管理に追加する方法について説明します。

  • XML スキーマ コレクションを使用するデータベースのチーム開発の開始
    データベース スキーマのオフライン表現を作成し、XML スキーマ定義 (XSD: XML Schema Definition) ファイルへの参照を定義し、そのファイルを使用する XML スキーマを定義し、その XML スキーマ コレクションを使用する列を定義して、そのプロジェクトをバージョン管理に追加する方法について説明します。

  • 共有サーバー オブジェクトを参照するデータベースのチーム開発の開始
    データベース スキーマのオフライン表現を作成し、共有サーバー プロジェクトへの参照を定義し、サーバー プロジェクトで定義されているオブジェクトへの参照を追加して、データベース プロジェクトをバージョン管理に追加する方法について説明します。

  • シナリオ : データベース サーバー上のオブジェクトのチーム開発の開始
    データベース サーバー上のオブジェクトのオフライン表現を作成し、そのサーバー プロジェクトをバージョン管理に追加する方法について説明します。

  • データベースのビルドおよび分離開発環境への配置
    データベースをビルドし、分離開発環境に配置する方法について説明します。 変更をバージョン コントロールにチェックインし、チームで共有する前に、変更を個別にテストできます。 変更をビルドしてステージング環境または稼動環境に配置する前に、変更を個別にテストする必要があります。

参照

概念

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

シナリオ : データベースおよびサーバー オブジェクトの作成および変更

Database Edition の用語の概要