データ層アプリケーションについて

データ層アプリケーション (DAC) とは、アプリケーションで使用されるすべてのデータベース オブジェクトおよびインスタンス オブジェクトを含むエンティティです。DAC により、データ層オブジェクトの作成、配置、管理を個別にではなく一元的に行うことができます。また、データ層の開発と、関連するアプリケーション コードの開発を密接に統合することが可能になります。さらに管理者は、システム リソースの使用状況をアプリケーション レベルで参照できます。

データ層アプリケーションの操作

DAC を操作するには、次の手順に従います。

  • まず、対象アプリケーションで使用されるオブジェクトを指定する DAC 型 (DAC 定義) を作成します。次に、DAC 定義をビルドして DAC パッケージを作成します。DAC パッケージは、DAC の配置時やアップグレード時に使用するファイルです。DAC 定義および DAC パッケージを作成するには、次の 2 つの方法があります。

    • Microsoft Visual Studio 2010 でデータ層アプリケーション プロジェクトを開き、DAC を構成するオブジェクトを指定する。DAC プロジェクトをビルドすると、DAC 定義がコンパイルされ、DAC パッケージに追加されます。

    • データ層アプリケーションの抽出ウィザードを使用し、既存のデータベースから DAC 定義を抽出し、DAC パッケージを作成する。

    詳細については、「データ層アプリケーションの実装」を参照してください。

  • DAC パッケージをデータベース エンジンのインスタンスに配置するには、データ層アプリケーションの配置ウィザードを使用します。通常、DAC パッケージの配置は、アプリケーション実行可能ファイルの配置と関連して行われます。DAC を配置すると、次の 2 つの主要部分で構成される DAC インスタンスが作成されます。

    • この DAC 定義は msdb システム データベース (SQL Azure では master データベース) に格納されます。

    • ユーザー データベース。作成されたユーザー データベースには、DAC 定義で指定されたオブジェクトが追加されます。

    データベース エンジンのインスタンスが、SQL Server ユーティリティのマネージ インスタンスである場合、DAC は配置済みの DAC としてユーティリティ コントロール ポイントにアップロードされます。

    詳細については、「データ層アプリケーションの配置」を参照してください。

  • アプリケーションは、DAC に関連付けられているデータベースに接続します。管理者は決められた手順に従って、DAC に関連付けられたデータベースを監視および管理できます。一方、次に示すように DAC 自体から追加情報を入手することもできます。

    • SQL Server Management Studio (SSMS) ユーティリティ エクスプローラー[配置済みのデータ層アプリケーション] ノードには、アプリケーション レベルのリソース使用状況レポートが表示されます。このレポートにより、管理者はデータ層アプリケーション インスタンスの状況を迅速に評価できます。

    • Management Studio オブジェクト エクスプローラー[データ層アプリケーション] ノードには、各 DAC インスタンスのプロパティが表示されます。

  • DAC により、あるデータベース バージョンから別のバージョンへのアップグレードをサポートするプロセスを簡略化できます。Transact-SQL スクリプトを使用してデータベースを配置する際、データベース開発者は、データベースの各後継バージョンについて 2 つのスクリプト セットをビルドする必要があります。一方のスクリプト セットは、既存のデータベースを新しいバージョンにアップグレードするため、他方のセットは新しいデータベースをインストールするために使用されます。しかし、DAC を使用することで、データベース開発者は 1 つの DAC パッケージをビルドするだけでよくなります。このパッケージには、新しいバージョンのアプリケーションによって使用されるスキーマが記述されています。開発者はデータ層アプリケーションの配置ウィザードでこのパッケージを使用し、DAC の新しいインスタンスをインストールできます。また、データ層アプリケーションのアップグレード ウィザードで同じパッケージを使用し、既存の DAC インスタンスをアップグレードすることもできます。データ層アプリケーションのアップグレード ウィザードは 2 つのスキーマを比較し、既存の DAC インスタンスを新しい DAC バージョンに変換するために必要なアクションを動的に実行します。

    詳細については、「データ層アプリケーションのアップグレード」を参照してください。

  • DAC をデータベース エンジンのインスタンスから削除するには、データ層アプリケーションの削除ウィザードを使用します。

DAC のビルドと使用の詳細については、「データ層アプリケーションのチュートリアル」を参照してください。

データ層アプリケーションの要素

DAC 定義は次の要素で構成されています。

  • DAC の特性を定義するさまざまな DAC プロパティ。たとえば、各 DAC には、関連付けられているアプリケーションの名前やバージョン番号を表す、アプリケーション名プロパティやバージョン プロパティがあります。

  • アプリケーションによって使用されるすべてのデータベース オブジェクトの定義。スキーマ、テーブル、ビュー、ストアド プロシージャなどが含まれます。SQL Server 2008 R2 または Visual Studio 2010 を使用して作成された DAC では、すべての SQL Server オブジェクトを使用できるわけではありません。詳細については、「SQL Server オブジェクトとバージョンの DAC サポート」を参照してください。

  • ログインなどのインスタンスレベルのオブジェクトの定義。この定義はデータベース オブジェクトに関連付けられ、アプリケーションによって使用されます。

  • データベース エンジンのインスタンスが DAC をホストするために必要な前提条件を定義するサーバー選択ポリシー。このポリシーはサーバー選択ファセットを使用して定義され、インスタンスのエディションや既定の照合順序などの条件を評価できます。

  • Visual Studio で DAC を作成する際、DAC 定義に組み込むことができるファイルとスクリプト。たとえば、アプリケーション ドキュメント、有用なテスト データの作成方法を指定するデータ生成プラン、配置前および配置後のスクリプトなどがあります。

データ層アプリケーション プロジェクト

通常、DAC は、データベース開発者が Visual Studio 2010 でデータ層アプリケーション プロジェクトを使用して開発します。データベース開発者は、DAC の開発対象であるアプリケーションに必要なデータ層オブジェクトを定義します。DAC をアプリケーション開発者やテスト チームに渡す準備が完了したら、データベース開発者は DAC プロジェクトをビルドします。これにより、DAC の配置に使用できる DAC パッケージ ファイルが作成されます。

DAC プロジェクトの詳細については、「データ層アプリケーションの実装」を参照してください。

データ層アプリケーション パッケージ

DAC を配置する準備ができたら、その DAC をビルドして DAC パッケージを生成します。DAC パッケージは DAC 定義を含むファイルです。DAC パッケージは、DAC を配置する際の 1 つの単位です。これは、実行可能ファイルが、アプリケーション コードを配置する際の 1 つの単位であるのと同じです。通常、DAC パッケージのビルドはアプリケーション実行可能ファイルと関連して行われます。システム管理者が実行可能ファイルをアプリケーション層またはクライアント コンピューターに配置する時点で、データベース管理者は関連する DAC パッケージをデータベース エンジンのインスタンスに配置します。 

たとえば、開発チームが Finance という名前の 3 層アプリケーションを開発しているとします。このアプリケーションの Build 1.0.1.123 はすべての検証テストに合格し、実稼働環境に配置できる準備が整っています。アプリケーション開発者はバージョン 1.0.1.123 の Finance.exe ファイルを実稼働システム管理者に渡し、実稼働アプリケーション サーバーへの配置を依頼します。一方、データベース開発者はバージョン 1.0.1.123 の Finance.dacpac ファイルを実稼働データベース管理者に渡し、データベース エンジンの実稼働インスタンスへの配置を依頼します。

DAC パッケージは、さまざまな XML ファイルを含む ZIP ファイルで維持されます。DAC パッケージ ファイルの内容の詳細については、Microsoft SQL Server ファイル形式のドキュメントを参照してください。

データ層アプリケーション インスタンス

DAC をデータベース エンジンのインスタンスに配置すると、次のように DAC インスタンスが作成されます。

  • データベース エンジンのインスタンスに設定されている既定のデータベース プロパティを使用してデータベースが作成されます。新しいデータベースに、DAC で定義されたデータベース オブジェクトが作成されます。

  • DAC で定義されたすべてのインスタンスレベルのオブジェクト (ログインなど) が作成されます。

  • DAC インスタンスに関する元の DAC 定義とメタデータが、msdb システム データベース (SQL Azure では master データベース) に格納されます。

DAC インスタンスの配置が完了すると、それらのオブジェクトを操作したり、その DAC に基づいて作成されたデータベースにデータを追加したりできるようになります。

既存のデータベースのデータ層アプリケーションの作成

データ層アプリケーションの抽出ウィザードを使用し、既存のデータベースから DAC 定義を抽出できます。DAC 定義には、データベースから選択したオブジェクトと、関連するインスタンスレベル オブジェクト (データベース ユーザーにマップされるログインなど) が含まれます。このウィザードでは、DAC 定義をビルドして DAC パッケージを生成できます。通常、抽出した DAC パッケージを Visual Studio で DAC プロジェクトにインポートし、対象アプリケーションの次のバージョンを開発します。抽出したパッケージを使用して、DAC をデータベース エンジンの別のインスタンスに配置することもできます。

さらに、データ層アプリケーションの登録ウィザードを使用し、既存のデータベースの DAC を登録することもできます。ウィザードでは、既存のデータベース内のオブジェクトを含む DAC 定義が作成されます。その後、DAC 定義は msdb データベース (SQL Azure では master データベース) に格納されます。データベース エンジンのインスタンスが、SQL Server ユーティリティのマネージ インスタンスである場合、DAC の登録は配置済みの DAC としてユーティリティ コントロール ポイントにアップロードされます。