データ層アプリケーション (DAC)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Microsoft Fabric SQL Database
データ層アプリケーション (DAC) は、テーブル、ビュー、インスタンス オブジェクトなど、ユーザーのデータベースに関連付けられたすべての SQL Server オブジェクトを定義する論理的なデータベースエンティティです。 DAC は、データベース モデル全体の自己完結型ユニットであり、DAC パッケージ (.dacpac)と呼ばれるアーティファクトに移植可能です。 データ層アプリケーションは、SQL データベース プロジェクトからのビルド成果物であり、包括的なデータベース ライフサイクル管理と DevOps 戦略の一部として使用できます。
データ層アプリケーションの ツールサポート により、開発者とデータベース管理者は新規または既存のデータベースに .dacpac をデプロイできます。 既存のデータベースへのデプロイでは、.dacpac の内容と一致するように、データベース モデルを既存の状態から更新します。 開発者は、SQL データベース プロジェクトから DAC をビルドします。これは、データベース スキーマのソース管理を可能にする SQL オブジェクトを構築するための宣言型開発の概念です。
.bacpac は、既定でデータベース スキーマおよびデータベースに格納されているデータをカプセル化する関連アーティファクトです。 BACPAC の基本的なユース ケースは、あるサーバーから別のサーバーにデータベースを移動、またはローカル サーバーからクラウドにデータベースを移行し、既存のデータベースをオープン フォーマットでアーカイブすることです。
データ層アプリケーションの利点
データベース アプリケーションのライフサイクルには、開発者と DBA によるスクリプトの交換や、アプリケーションの更新およびメンテナンス アクティビティ用の使い捨て統合メモの共有が含まれる場合があります。 このプロセスは状況によっては許容されますが、Azure Pipelines や一般的な開発プロセスとの統合が困難な場合があります。
データ層アプリケーションを使用すると、宣言型データベースの開発が可能になり、開発プロセスが簡素化され、より一貫性のある予測可能な開発エクスペリエンスが提供されます。 開発者は、選択した統合開発環境 (IDE) で SQL データベース プロジェクトを含むデータベースを作成できます。 SQL データベース プロジェクトは、ローカルまたは Azure パイプラインで DAC パッケージにコンパイルできます。 DAC パッケージは、自動プロセスを使用してテスト、ステージング、運用のデータベースにデプロイするか、CLI または GUI ツールを使用して手動でデプロイします。 .dacpac を使用すると、新しいオブジェクトまたは変更されたオブジェクトでデータベースを更新したり、以前のバージョンのデータベースに戻したり、まったく新しいデータベースをプロビジョニングしたりできます。 逆に、既存のデータベースから .dacpac を生成し、現在のデータベース スキーマに基づいて SQL データベース プロジェクトを確立するために使用できます。
移行主導のプロセスに対する DAC 駆動型のデプロイの利点は、このプロセスによって、異なるソース データベースとターゲット データベースからの動作の識別と検証が可能になる点です。 データベースのデプロイ/アップグレード中に使用されるツールには、データ損失の原因となる可能性のある列サイズの変更や、アップグレード 計画を直接スクリプト化する機能など、危険なアクションにフラグを設定するオプションがあります。 このプランは、更新に進む前に手動で評価できます。
操作
DAC を使用すると、次のような点で、アプリケーションをサポートするデータ層要素の開発、デプロイ、および管理が容易になります。
DACPAC
DAC では、以下のオブジェクトがサポートされています。
EXTRACT: ユーザーはデータベースを .dacpac に抽出できます。 詳細については、「SqlPackage の抽出とデータベースからの DAC の抽出」を参照してください。
DEPLOY/PUBLISH: ユーザーは .dacpac をホスト サーバーにデプロイできます。 既存のデータベースにデプロイを行うと、データベースと DAC の違いがオブジェクト更新操作としてデータベースに適用されます。 多くの場合"発行"という用語は、"配置"と同じ意味で使用されます。詳細については「SqlPackage の発行」、「データ層アプリケーションの配置」、「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 つの操作をサポートするスキーマとデータのキャプチャに重点を置きます。
EXPORT: ユーザーは、.bacpac にスキーマとデータベースのデータをエクスポートできます。 詳細については、「SqlPackage のエクスポートとデータ層アプリケーションのエクスポート」を参照してください。
IMPORT: ユーザーは、スキーマおよびデータを新しいデータベースにインポートできます。 詳細については、「SQLPackage のインポートと BACPAC ファイルをインポートして新しいユーザー データベースを作成する」を参照してください。
これらの機能が、ツール 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 パッケージの検証 |