データ層アプリケーション (DAC)

適用対象:yesSQL Server (サポートされているすべてのバージョン) YesAzure SQL Database YesAzure SQL Managed Instance

データ層アプリケーション (DAC) は、ユーザーのデータベースに関連付けられた、テーブル、ビュー、インスタンス オブジェクト (ログインを含む) など、すべてのSQL Server オブジェクトを定義する論理データベース エンティティです。 DAC はデータベース モデル全体の自己完結型ユニットであり、DAC パッケージ ( .dacpac) と呼ばれる成果物に移植できます。 データ層アプリケーションのツールサポートにより、開発者とデータベース管理者は新規または既存のデータベースに dacpac をデプロイできます。 既存のデータベースへのデプロイでは、dacpac の内容と一致するように、データベース モデルを既存の状態から更新します。 開発者は、SQL データベース プロジェクトから DAC を構築します。これは、データベース スキーマのソース管理を可能にする SQL オブジェクトを構築するための宣言型開発の概念です。

.bacpac は、既定でデータベース スキーマとデータベースに格納されているデータをカプセル化する関連成果物です。 BACPAC の基本的なユース ケースは、あるサーバーから別のサーバーにデータベースを移動、またはローカル サーバーからクラウドにデータベースを移行し、既存のデータベースをオープン フォーマットでアーカイブすることです。

データ層アプリケーションの利点

データベース アプリケーションのライフサイクルには、開発者や DBA がスクリプトを交換し、アプリケーション更新アクティビティの単一使用統合ノートを共有する必要があります。 このプロセスは状況によっては許容されますが、DevOps パイプラインや一般的な開発プロセスと統合することは困難な場合があります。

データ層アプリケーションを使用すると、宣言型データベース開発が可能になり、開発プロセスが簡素化され、より一貫性のある予測可能な開発エクスペリエンスが提供されます。 開発者は、統合開発環境 (IDE) の選択で SQL データベース プロジェクトを含むデータベースを作成できます。 SQL データベース プロジェクトは、ローカルまたは DevOps パイプラインで DAC パッケージにコンパイルできます。 DAC パッケージは、自動プロセスを通じてテスト、ステージング、または運用データベースにデプロイされるか、CLI または GUI ツールを使用して手動でデプロイされます。 .dacpac を使用すると、新しいオブジェクトまたは変更されたオブジェクトでデータベースを更新したり、以前のバージョンのデータベースに戻したり、まったく新しいデータベースをプロビジョニングしたりできます。 逆に、既存のデータベースから .dacpac を生成し、現在のデータベース スキーマに基づいて SQL データベース プロジェクトを確立するために使用できます。

移行主導のプロセスに対する DAC 駆動型デプロイの利点は、このプロセスによって、さまざまなソース データベースとターゲット データベースからの動作の識別と検証が可能になる点です。 データベースのデプロイ/アップグレード中に使用されるツールには、データ損失を引き起こす可能性のある列サイズの変更や、アップグレード 計画を直接スクリプト化する機能など、危険なアクションにフラグを設定するオプションがあります。 このプランは、更新を続行する前に手動で評価できます。

操作

DAC を使用すると、アプリケーションをサポートするデータ層要素の開発、デプロイ、管理が簡単になります。

DACPAC

DAC では、以下のオブジェクトがサポートされています。

これらの機能は、SqlPackage、SQL Server Management Studio、Azure Data Studio、およびSQL Server Data Toolsにあります。

SQL データベース プロジェクト

SQL プロジェクトでは、次の操作がサポートされています。

  • BUILD - ユーザーは SQL データベース プロジェクトを .dacpac にビルドできます。

  • PUBLISH - ユーザーは SQL データベース プロジェクトをホスト サーバーに発行できます。

  • EXTRACT - ユーザーはデータベースを SQL データベース プロジェクトに抽出できます。

これらの機能は、Azure Data Studio、Visual Studio Code、およびSQL Server Data Toolsにあります。

BACPAC

一方、 .bacpac は、次の 2 つの主要な操作をサポートするスキーマとデータのキャプチャに重点を置いている。

これらの機能は、SqlPackage、SQL Server Management Studio、Azure Data Studio、Azure portalツールでサポートされています。

DAC ツール

データ層アプリケーション成果物と SQL プロジェクトは、複数のツールで使用できます。 これらのツールは、さまざまなユーザー ペルソナの要件に対処します。

DACPAC と BACPAC

次のツールは、DAC パッケージと BAC パッケージ形式をサポートしています。

これらのツールでは、データベースを .dacpac に抽出することも、 .bacpac にエクスポートすることもできます。 逆に、 .bacpac を新しいデータベースにインポートすることも、 .dacpac を新規または既存のデータベースに発行することもできます。

DACPAC プロジェクトと SQL プロジェクト

次のツールでは、SQL データベース プロジェクトの編集だけでなく、DAC パッケージ形式もサポートされています。

これらのツールでは、開発者は、接続されていないクライアント側開発環境でデータベースを設計できます。 このツールを使用して、DAC パッケージの作成、DAC パッケージのデータベースへのデプロイ、SQL プロジェクトへのデータベース パッケージのインポートを行うことができます。

DAC の概念

バージョンのサポート

一般に、DAC ツールは、DAC ツールによって生成された .dacpac ファイルを以前の SQL Server バージョンから読み取ることができ、DAC パッケージを以前のバージョンのSQL Serverに展開することもできます。 ただし、以前のバージョンの DAC ツールでは、DAC ツールによって生成された .dacpac ファイルを新しいバージョンから読み取ることはできません。 DAC ツールでは、少なくとも、リリース時にサポートされているバージョンのSQL Serverがサポートされます。

ファイル形式

.dacpac は .dacpac 拡張子を持つ圧縮フォルダーであり、同様に .bacpac は .bacpac 拡張子を持つ圧縮フォルダーです。 高度なユーザーは、ファイルを開梱して、配信元の詳細、データベース内のオブジェクト、およびその他の特性を表す複数の XML セクションを表示できます。 .dacpac または .bacpac を開梱するには、ファイル拡張子を.zip に置き換え、ファイル圧縮ユーティリティを使用してファイルを解凍します。

データ層アプリケーションの登録

SQL Server Management Studioデータベースに対して他のアクションを実行して、データ層アプリケーションとして登録できます。

  • REGISTER: ユーザーはデータベースをデータ層アプリケーションとして登録できます。

  • UNREGISTER: DAC として既に登録されているデータベースを登録解除できます。

  • UPGRADE - .dacpac を使用してデータベースをアップグレードできます。

これらのアクションの詳細については、次のタスクを参照してください。

タスク 記事リンク
DAC のインスタンスを新しいバージョンにアップグレードするために、新しい DAC パッケージ ファイルを使用する方法について説明します。 データ層アプリケーションのアップグレード
DAC インスタンスを削除する方法について説明します。 関連付けられているデータベースをデタッチまたは削除するか、データベースはそのまま残すかも選択できます。 データ層アプリケーションの削除
SQL Server ユーティリティを使用して、現在配置されている DAC の正常性を表示する方法について説明します。 データ層アプリケーションの監視
既存のデータベースを DAC インスタンスに昇格させる方法について説明します。 DAC 定義はビルドされ、システム データベースに格納されます。 データベースを DAC として登録する方法
実稼働システムで DAC パッケージを使用する前に、パッケージの内容と DAC のアップグレードによって行われる動作を確認する方法について説明します。 DAC パッケージの検証

次のステップ