データ層アプリケーションの実装

データ層アプリケーション (DAC) は、アプリケーションのサポートに必要な SQL Server データベース エンジンのスキーマとオブジェクトを定義します。DAC を実装するには次の 2 つの方法があります。

  • Microsoft Visual Studio 2010 で SQL Server データ層アプリケーション プロジェクトを使用し、DAC を作成およびビルドする。

  • SQL Server Management Studio でデータ層アプリケーションの抽出ウィザードを使用し、既存のデータベースから DAC を抽出する。

上記どちらの方法でも、オブジェクトとメタデータを指定する DAC 定義を生成できます。DAC 定義は、DAC パッケージにビルドされます。DAC パッケージとは、DAC に含まれるすべてのオブジェクトおよびポリシー定義のマニフェストを含むファイルです。DAC パッケージは次の目的に使用できます。

  • データベース エンジンおよび SQL Azure のインスタンスを開発、テスト、運用するために、DAC の現在のバージョンを配置する。DAC の新しいインスタンスを配置するには、データ層アプリケーションの配置ウィザードを使用します。古いバージョンの DAC を使用して配置された DAC の既存のインスタンスをアップグレードするには、データ層アプリケーションのアップグレード ウィザードを使用します。

  • Visual Studio で DAC を新しい SQL Server データ層アプリケーション プロジェクトにインポートし、Visual Studio で DAC の次のバージョンの開発を開始する。

開発プロセスのデータ層アプリケーション

DAC を開発するには、Visual Studio で DAC プロジェクトを使用します。DAC プロジェクトにより、データ層オブジェクトの開発と、それらのオブジェクトを使用するためのアプリケーションの開発環境を密接に統合できます。データベース開発者は、Visual Studio で DAC プロジェクトを使用して DAC を作成します。Visual Studio Team System では、アプリケーションの開発ソリューション全体に DAC プロジェクトを統合できます。アプリケーション開発者がアプリケーション コードを記述するように、データベース開発者は DAC でデータ層オブジェクト定義をコーディングします。

新しいアプリケーションの場合、データベース開発者は DAC プロジェクトを作成します。次に、開発されたオブジェクトを順次プロジェクトに追加します。既存のアプリケーションの最新バージョンを開発するプロジェクトでは、対象アプリケーションで現在使用されているデータベースから DAC パッケージを抽出し、そのパッケージを DAC プロジェクトにインポートします。

開発者は、次の要素を DAC プロジェクトに追加できます。

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

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

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

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

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

テストを行う場合、データベース開発者は、データベース エンジンのテスト インスタンスに DAC プロジェクトを配置できます。また、DAC 定義を DAC パッケージとして作成する DAC プロジェクトをビルドする方法もあります。DAC 定義には、DAC プロジェクトで定義されているすべての要素のメタデータが含まれています。DAC パッケージは、DAC 定義を含む XML 圧縮ファイルで、DAC を配置またはアップグレードするために使用されます。開発者やテスターは、データ層アプリケーションの配置ウィザードを使用して、自分のテスト システムに DAC を配置できます。

アプリケーションの開発が完了したら、DAC プロジェクトをビルドして DAC パッケージの実稼働版を作成します。これは、アプリケーション プロジェクトがビルドされて、アプリケーション実行可能ファイルが作成されるのと同じです。作成した実稼働版 DAC パッケージを実稼働データベース管理者に渡します。データベース管理者は、実稼働環境で動作するデータベース エンジンのインスタンス、または SQL Azure にこのパッケージを配置します。

DAC の特定のバージョンを実稼働環境に配置したら、その DAC の次期バージョン開発を開始できます。データベース開発者は、DAC プロジェクトの新しいバージョン (そのバージョンのデータ層オブジェクトすべての定義が含まれる) を作成します。新バージョンの DAC プロジェクトをビルドして新しい DAC パッケージを作成すると、そのパッケージを使用して、DAC の新しいインスタンスを配置したり、既存のインスタンスを新しいバージョンにアップグレードしたりできます。データ層アプリケーションのアップグレード ウィザードは、既存の DAC インスタンスのスキーマと DAC パッケージを比較し、既存の DAC インスタンスを新しい DAC バージョンに変換するために必要なアクションを動的に実行します。

Visual Studio ドキュメントの DAC プロジェクトに関する詳細については、「データ層アプリケーションの作成および管理」を参照してください。

データベースからの DAC の抽出

既存のデータベースに基づいて DAC 定義を作成するには、データ層アプリケーションの抽出ウィザードを使用します。DAC 定義には、データベース内のすべてのオブジェクトを定義するメタデータ、データベース内のセキュリティ プリンシパルのログイン情報、およびデータベース照合順序と互換性レベルが含まれます。ソース データベース内のユーザー データは DAC 定義に含まれません。DAC 定義は、DAC パッケージ ファイルにビルドされます。

データ層アプリケーションの抽出ウィザードでは、データ層アプリケーションでサポートされているオブジェクトのみを抽出できます。DAC 名やバージョンなどのプロパティを指定すると、対象データベースからすべてのオブジェクトが読み込まれ、それらが DAC でサポートされているかどうかが検証されます。その後、各オブジェクトが次の 3 つのカテゴリに分類され、概要ページに表示されます。

  • 赤い無効アイコン : このオブジェクトは DAC でサポートされていません。

  • 黄色の警告アイコン : オブジェクト自体は DAC でサポートされていますが、依存するオブジェクトが DAC でサポートされていません。

  • 緑色の成功アイコン : オブジェクト自体が DAC でサポートされており、依存するオブジェクトも DAC でサポートされています。

ウィザードの実行中に、DAC でサポートされていないオブジェクトが見つかると、概要レポートにそれらのオブジェクトの一覧が表示され、DAC パッケージは作成されません。すべてのオブジェクトに緑色の成功アイコンが表示されている場合、DAC パッケージの作成に進むことができます。

抽出された DAC パッケージは次の目的に使用できます。

  • Visual Studio で DAC を DAC プロジェクトにインポートし、データベース開発者が次のバージョンの DAC の開発を開始する。

  • DAC の新しいインスタンスを配置する。

  • 以前に配置された DAC のバージョンをアップグレードする。

サポートされているオブジェクトの種類の詳細については、「SQL Server オブジェクトとバージョンの DAC サポート」を参照してください。

ウィザードを開始する方法の詳細については、「データベースから DAC を抽出する方法」を参照してください。

ログイン パスワード

セキュリティを強化するため、SQL Server 認証のログイン情報は、パスワードなしで DAC パッケージに格納されます。パッケージが配置またはアップグレードされると、ログインは、生成されたパスワードを伴う無効なログインとして作成されます。ログインを有効にするには、ALTER ANY LOGIN 権限を持つユーザーとしてログインし、ALTER LOGIN を使用してログインを有効にします。さらに、新しいパスワードを割り当て、そのパスワードを該当ユーザーに通知します。Windows 認証ログインの場合、ログインのパスワードは SQL Server で管理されていないため、この操作は必要ありません。