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

適用対象:SQL ServerAzure SQL DatabaseAzure 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 Database プロジェクト

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

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

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

  • EXTRACT: ユーザーはデータベースを SQL データベースサーバーに抽出できます。

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

BACPAC

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

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

DAC ツール

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

DACPAC と BACPAC

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

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

DACPAC および SQL プロジェクト

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

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

DAC の概念

バージョンのサポート

一般に、DAC ツールでは以前の SQL Server バージョンの DAC ツールによって生成された .dacpac ファイルを読み取ることができ、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 インスタンスを削除する方法について説明します。 関連付けられているデータベースをデタッチまたは削除するか、データベースはそのまま残すかも選択できます。 データ層アプリケーションの削除
既存のデータベースを DAC インスタンスに昇格させる方法について説明します。 DAC 定義はビルドされ、システム データベースに格納されます。 データベースを DAC として登録する方法
実稼働システムで DAC パッケージを使用する前に、パッケージの内容と DAC のアップグレードによって行われる動作を確認する方法について説明します。 DAC パッケージの検証

次のステップ