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