データ層アプリケーションData-tier Applications

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

データ層アプリケーション (DAC) は、テーブル、ビュー、インスタンス オブジェクト (ログインを含む) など、ユーザーのデータベースに関連付けられたすべての SQL ServerSQL Server オブジェクトを定義する論理的なデータベース管理エンティティです。A data-tier application (DAC) is a logical database management entity that defines all of the SQL ServerSQL Server objects - like tables, views, and instance objects, including logins - associated with a user's database. DAC は、データ層の開発者とデータベース管理者が SQL ServerSQL Server オブジェクトを DAC パッケージ (DACPAC とも呼ばれます) という移植可能なアーティファクトにパッケージ化できるようにする自己完結型の SQL ServerSQL Server データベース配置単位です。A DAC is a self-contained unit of SQL ServerSQL Server database deployment that enables data-tier developers and database administrators to package SQL ServerSQL Server objects into a portable artifact called a DAC package, also known as a DACPAC.

BACPAC は、データベース スキーマおよびデータベースに格納されているデータをカプセル化する関連アーティファクトです。A BACPAC is a related artifact that encapsulates the database schema as well as the data stored in the database.

データ層アプリケーションの利点Benefits of Data-tier Applications

ほとんどのデータベース アプリケーションのライフサイクルでは、開発者と DVA が共有および交換するスクリプトと、アプリケーションの更新およびメンテナンス アクティビティ用のアドホック統合メモが使用されます。The lifecycle of most database applications involves developers and DBAs sharing and exchanging scripts and ad hoc integration notes for application update and maintenance activities. これは少数のデータベースでは許容されますが、データベースの数、サイズ、および複雑さが増大するとすぐにスケーラブルでなくなります。While this is acceptable for a small number of databases, it quickly becomes unscalable once databases grow in number, size, and complexity.

DAC は、宣言的なデータベース開発で配置と管理を簡略化できるようにするデータベース ライフ サイクル管理および生産性ツールです。A DAC is a database lifecycle management and productivity tool that enables declarative database development to simplify deployment and management. 開発者は、SQL Server データ ツール データベース プロジェクトでデータベースを作成してから、DBA に渡すためにデータベースを DACPAC に構築できます。A developer can author a database in SQL Server Data Tool database project and then build the database into a DACPAC for handoff to a DBA. DBA は、SQL Server Management Studio を使用して DAC を配置して、SQL ServerSQL Server または Azure SQL データベースAzure SQL Databaseのテスト インスタンスまたは実稼働インスタンスをテストできます。The DBA can deploy the DAC using SQL Server Management Studio to a test or production instance of SQL ServerSQL Server or Azure SQL データベースAzure SQL Database. また、DBA は DACPAC を使用して、SQL Server Management Studio で以前に配置したデータベースをアップグレードできます。Alternatively, the DBA can use the DACPAC to upgrade a previously deployed database using SQL Server Management Studio. ライフサイクルを完了するために、DBA はデータベースを DACPAC に抽出し、開発者に渡して、テストまたは実稼働の調整を反映したり、アプリケーションの変更に応じたデータベース デザインの変更を可能にしたりできます。To complete the lifecycle, the DBA can extract the database into a DACPAC and hand it off to a developer to either reflect test or production adjustments, or to enable further database design changes in response to changes in the application.

DAC ドリブン配置がスクリプト ドリブンの配置より優れている点は、ツールによって DBA が異なるソースおよびターゲット データベースからの動作を識別および検証できることです。The advantage of a DAC-driven deployment over a script driven exercise is that the tool helps the DBA with identifying and validating behaviors from different source and target databases. アップグレード中に、アップグレードによりデータ損失の可能性がある場合にはツールによって DBA に警告され、アップグレード計画も提供されます。During upgrades, the tool warns the DBA if the upgrade might cause data loss, and also provide an upgrade plan. DBA は、計画を評価し、ツールを利用してアップグレードを続行できます。The DBA can evaluate the plan and then utilize the tool to proceed with the upgrade.

DAC では、開発者と DBA がデータベースのライフサイクルにわたってデータベース系列をメンテナンスおよび管理するのに役立つバージョン管理もサポートされます。DAC's also support versioning to help the developer and the DBA maintain and manage the database lineage through its lifecycle.

DAC の概念DAC Concepts

DAC を使用すると、次のような点で、アプリケーションをサポートするデータ層要素の開発、配置、および管理が容易になります。A DAC simplifies the development, deployment, and management of data-tier elements that support an application:

  • データ層アプリケーション (DAC) は、テーブル、ビュー、インスタンス オブジェクトなど、ユーザーのデータベースに関連付けられたすべての SQL Server オブジェクトを定義する論理的なデータベース管理エンティティです。A data-tier application (DAC) is a logical database management entity that defines all SQL Server objects - such as tables, views, and instance objects - associated with a user's database. データ層の開発者と DBA が SQL Server オブジェクトを DAC パッケージまたは .dacpac ファイルと呼ばれる移植可能なアーティファクトにパッケージ化できるようにする自己完結型の SQL Server データベース配置単位です。It is a self-contained unit of SQL Server database deployment that enables data-tier developers and DBAs to package SQL Server objects into a portable artifact called a DAC package, or .dacpac file.

  • SQL Server データベースを DAC として扱うには、ユーザー操作によって明示的に、または DAC 操作の 1 つによって暗黙的に登録する必要があります。For a SQL Server database to be treated as a DAC, it must be registered - either explicitly by a user operation, or implicitly by one of the DAC operations. データベースが登録されると、DAC バージョンとその他のプロパティがデータベースのメタデータの一部として記録されます。When a database is registered, the DAC version and other properties are recorded as part of the metadata of the database. 反対に、データベースを登録解除し、その DAC プロパティを削除することもできます。Conversely, a database can also be unregistered and have its DAC properties removed.

  • 一般に、DAC ツールでは以前の SQL Server バージョンの DAC ツールによって生成された DACPAC ファイルを読み取ることができ、DACPAC を以前のバージョンの SQL Server に配置することもできます。In general, DAC tools are capable of reading DACPAC files generated by DAC tools from previous SQL Server versions, and can also deploy DACPAC's to previous versions of SQL Server. 一方、以前のバージョンの DAC ツールでは、新しいバージョンの DAC ツールによって生成された DACPAC ファイルを読み取ることができません。However, DAC tools from earlier versions cannot read DACPAC files generated by DAC tools from later versions. 具体的な内容は次のとおりです。Specifically:

    • DAC 操作は、SQLServer 2008 R2 で導入されました。DAC operations were introduced in SQL Server 2008 R2. SQL Server 2008 R2 データベースに加えて、ツールでは SQL Server 2008、SQL Server 2005、および SQL Server 2000 データベースからの DACPAC ファイルの生成がサポートされます。In addition to SQL Server 2008 R2 databases, the tools support generation of DACPAC files from SQL Server 2008, SQL Server 2005 and SQL Server 2000 databases.

    • SQL 2016 データベースに加えて、SQL Server 2016 に付属のツールでは、SQL Server 2008 R2 または SQL Server 2012 に付属の DAC ツールで生成された DACPAC ファイルを読み取ることができます。In addition to SQL 2016 databases, the tools shipped with SQL Server 2016 can read DACPAC files generated by DAC tools shipped with SQL Server 2008 R2 or SQL Server 2012. これには、SQL Server 2014、2012、2008 R2、2008、2005 のデータベースが含まれますが、SQL Server 2000 のデータベースは含まれませんThis includes databases from SQL Server 2014, 2012, 2008 R2, 2008, and 2005, but not SQL Server 2000.

    • SQL Server 2008 R2 の DAC ツールでは、 SQL Server 2012 (11.x)SQL Server 2012 (11.x) または SQL Server 2017SQL Server 2017のツールによって生成された DACPAC ファイルを読み取ることはできません。DAC tools from SQL Server 2008 R2 cannot read DACPAC files generated by tools from SQL Server 2012 (11.x)SQL Server 2012 (11.x) or SQL Server 2017SQL Server 2017.

  • DACPAC は、.dacpac 拡張子を持つ Windows ファイルです。A DACPAC is a Windows file with a .dacpac extension. このファイルでは、DACPAC の生成元、データベース内のオブジェクト、およびその他の特性を詳細に表す複数の XML セクションから構成されるオープン フォーマットがサポートされます。The file supports an open format consisting of multiple XML sections representing details of the DACPAC origin, the objects in the database, and other characteristics. 上級ユーザーは、製品に付属の DacUnpack.exe ユーティリティを使用してファイルをパッケージ解除して、各セクションをより詳細に調査できます。An advanced user can unpack the file using the DacUnpack.exe utility that ships with the product to inspect each section more closely.

  • ユーザーがデータベースを作成 (DAC パッケージを配置することによるデータベースの作成を含む) するには、dbmanager ロールのメンバーであるか、CREATE DATABASE 権限が割り当てられている必要があります。The user must be a member of the dbmanager role or assigned CREATE DATABASE permissions to create a database, including creating a database by deploying a DAC package. ユーザーがデータベースを削除するには、dbmanager ロールのメンバーであるか、DROP DATABASE 権限を割り当てられている必要があります。The user must be a member of the dbmanager role, or have been assigned DROP DATABASE permissions to drop a database.

DAC ツールDAC Tools

DACPAC は、 SQL Server 2017SQL Server 2017に付属の複数のツール間でシームレスに使用できます。A DACPAC can be seamlessly used across multiple tools that ship with SQL Server 2017SQL Server 2017. これらのツールは、相互運用性の単位として DACPAC を使用して、異なるユーザーの要件に対処します。These tools address the requirements of different user personas using a DACPAC as the unit of interoperability.

  • アプリケーション開発者:Application Developers:

    • SQL Server データ ツール データベース プロジェクトを使用し、データベースをデザインできます。Can use a SQL Server Data Tools database project to design a database. このプロジェクトが正常に構築されると、.dacpac ファイルに含まれる DACPAC が生成されます。A successful build of this project results in the generation of a DACPAC contained in a .dacpac file.

    • DACPAC をデータベース プロジェクトにインポートし、データベースのデザインを続行できます。Can import a DACPAC into a database project and continue to design the database.

      SQL Server データ ツールでは、接続されていないクライアント側データベース アプリケーション配置用のローカル DB もサポートされます。SQL Server Data Tools also supports a Local DB for unconnected, client-side database application development. 開発者は、このローカル データベースのスナップショットを作成して、.dacpac ファイルに含まれる DACPAC を作成できます。The developer can take a snapshot of this local database to create DACPAC contained in a .dacpac file.

    • それとは別に、開発者は、DACPAC を生成しなくても、データベースにデータベース プロジェクトを直接パブリッシュできます。Independently, the developer can publish a database project directly to a database without even generating a DACPAC. パブリッシュ操作の後に、他のツールからの配置操作などの同様の動作が続きます。The publish operation follows similar behavior as the deploy operation from other tools.

  • データベース管理者:Database Administrators:

    • SQL Server Management Studio を使用して、既存のデータベースから DACPAC を抽出でき、その他の DAC 操作を実行することもできます。Can use SQL Server Management Studio to extract a DACPAC from an existing database, and also perform other DAC operations.

    • また、 SQL DatabaseSQL Database の DBA は、DAC 操作に Management Portal for SQL Azure を使用できます。In addition, the DBA for a SQL DatabaseSQL Database can use the Management Portal for SQL Azure for DAC operations.

  • 独立系ソフトウェア ベンダー:Independent Software Vendors:

    • SQL Server のホスティング サービスおよびその他のデータ管理製品では、DAC 操作に DACFx API を使用できます。Hosting services and other data management products for SQL Server can use the DACFx API for DAC operations.
  • IT 管理者:IT Administrators:

    • IT システム インテグレーターと管理者は、DAC 操作に SqlPackage.exe コマンド ライン ツールを使用できます。IT systems integrators and administrators can use the SqlPackage.exe command line tool for DAC operations.

DAC 操作DAC Operations

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

  • EXTRACT: ユーザーはデータベースを DACPAC に抽出できます。EXTRACT - the user can extract a database into a DACPAC.

  • DEPLOY: ユーザーは DACPAC をホスト サーバーに配置できます。DEPLOY - the user can deploy a DACPAC to a host server. 配置が SQL Server Management Studio や Management Portal for SQL Azure などの管理ツールから行われる場合、ホスト サーバーに生成されるデータベースがデータ層アプリケーションとして暗黙的に登録されます。When the deployment is done from a manageability tool like SQL Server Management Studio or the Management Portal for SQL Azure, the resulting database in the host server is implicitly registered as a data-tier application.

  • REGISTER: ユーザーはデータベースをデータ層アプリケーションとして登録できます。REGISTER - the user can register a database as a data-tier application.

  • UNREGISTER: DAC として既に登録されているデータベースを登録解除できます。UNREGISTER - a database previously registered as a DAC can be unregistered.

  • UPGRADE: DACPAC を使用してデータベースをアップグレードできます。UPGRADE - a database can be upgraded using a DACPAC. アップグレードは、データ層アプリケーションとして登録されていないデータベースでもサポートされますが、アップグレードの結果として、データベースが暗黙的に登録されます。Upgrade is supported even on databases that are not previously registered as data-tier applications, but as a consequence of the upgrade, the database will be implicitly registered.


BACPAC は .bacpac 拡張子を持つ Windows ファイルで、データベースのスキーマとデータをカプセル化します。A BACPAC is a Windows file with a .bacpac extension that encapsulates a database's schema and data. BACPAC の基本的なユース ケースは、あるサーバーから別のサーバーにデータベースを移動、またはローカル サーバーからクラウドにデータベースを移行し、既存のデータベースをオープン フォーマットでアーカイブすることです。The primary use case for a BACPAC is to move a database from one server to another - or to migrate a database from a local server to the cloud - and archiving an existing database in an open format.

DACPAC と同様に、BACPAC ファイル形式は公開されており、BACPAC のスキーマ コンテンツは DACPAC のスキーマ コンテンツと同じです。Similar to the DACPAC, the BACPAC file format is open - the schema contents of the BACPAC are identical to that of the DACPAC. BACPAC 内のデータは JSON 形式で格納されます。The data in a BACPAC is stored in JSON format.

DACPAC と BACPAC は似ていますが、ターゲットとするシナリオは異なります。DACPAC and BACPAC are similar but they target different scenarios. DACPAC は、既存のデータベースのアップグレードなど、スキーマのキャプチャと配置に重点を置きます。A DACPAC is focused on capturing and deploying schema, including upgrading an existing database. DACPAC の主なユースケースは、厳密に定義されたスキーマを開発環境、テスト環境、その後運用環境に配置することです。The primary use case for a DACPAC is to deploy a tightly defined schema to development, test, and then to production environments. またその逆に、運用環境のスキーマをキャプチャし、テスト環境や開発環境に適用して戻します。And also the reverse: capturing production's schema and applying it back to test and development environments.

一方、BACPAC は、主に次の 2 つの操作をサポートするスキーマとデータのキャプチャに重点を置きます。A BACPAC, on the other hand, is focused on capturing schema and data supporting two main operations:

  • EXPORT: ユーザーは、BACPAC にスキーマとデータベースのデータをエクスポートできます。EXPORT- The user can export the schema and the data of a database to a BACPAC.

  • IMPORT: ユーザーは、スキーマおよびデータをホスト サーバーの新しいデータベースにインポートできます。IMPORT - The user can import the schema and the data into a new database in the host server.

この両方の機能が、次のデータベース管理ツールでサポートされます:SQL Server Management Studio、Azure Portal、DACFx API。Both these capabilities are supported by the database management tools: SQL Server Management Studio, the Azure Portal, and the DACFx API.


データベースを作成 (DAC パッケージを配置することによるデータベースの作成を含む) するには、 dbmanager ロールのメンバーであるか、 CREATE DATABASE 権限が割り当てられている必要があります。You must be a member of the dbmanager role or assigned CREATE DATABASE permissions to create a database, including creating a database by deploying a DAC package. データベースを削除するには、 dbmanager ロールのメンバーであるか、 DROP DATABASE 権限が割り当てられている必要があります。You must be a member of the dbmanager role, or have been assigned DROP DATABASE permissions to drop a database.

データ層アプリケーションのタスクData-tier Application Tasks

タスクTask トピックTopic Link
新しい DAC インスタンスを作成するために DAC パッケージ ファイルを使用する方法について説明します。Describes how to use a DAC package file to create a new DAC instance. データ層アプリケーションの配置Deploy a Data-tier Application
DAC のインスタンスを新しいバージョンにアップグレードするために、新しい DAC パッケージ ファイルを使用する方法について説明します。Describes how to use a new DAC package file to upgrade an instance to a new version of the DAC. データ層アプリケーションのアップグレードUpgrade a Data-tier Application
DAC インスタンスを削除する方法について説明します。Describes how to remove a DAC instance. 関連付けられているデータベースをデタッチまたは削除するか、データベースはそのまま残すかも選択できます。You can choose to also detach or drop the associated database, or leave the database intact. データ層アプリケーションの削除Delete a Data-tier Application
SQL Server ユーティリティを使用して、現在配置されている DAC の正常性を表示する方法について説明します。Describes how to view the health of currently deployed DACs by using the SQL Server Utility. データ層アプリケーションの監視Monitor Data-tier Applications
DAC 内のデータとメタデータのアーカイブを含む .bacpac ファイルを作成する方法について説明します。Describes how to create a .bacpac file that contains an archive of the data and metadata in a DAC. データ層アプリケーションのエクスポートExport a Data-tier Application
DAC の論理的な復元を実行したり、DAC をデータベース エンジンDatabase Engineの他のインスタンスまたは SQL DatabaseSQL Database に移行したりするために DAC アーカイブ ファイル (.bacpac) を使用する方法について説明します。Describes how to use a DAC archive file (.bacpac) to either perform a logical restore of a DAC, or to migrate the DAC to another instance of the データベース エンジンDatabase Engine or SQL DatabaseSQL Database. BACPAC ファイルのインポートによる新しいユーザー データベースの作成Import a BACPAC File to Create a New User Database
BACPAC ファイルをインポートして、SQL ServerSQL Server のインスタンス内に新しいユーザー データベースを作成する方法について説明します。Describes how to import a BACPAC file to create a new user database within an instance of SQL ServerSQL Server. データベースからの DAC の抽出Extract a DAC From a Database
既存のデータベースを DAC インスタンスに昇格させる方法について説明します。Describes how to promote an existing database to be a DAC instance. DAC 定義はビルドされ、システム データベースに格納されます。A DAC definition is built and stored in the system databases. データベースを DAC として登録する方法Register a Database As a DAC
実稼働システムで DAC パッケージを使用する前に、パッケージの内容と DAC のアップグレードによって行われる動作を確認する方法について説明します。Describes how to review the contents of a DAC package and the actions a DAC upgrade will perform before using the package in a production system. DAC パッケージの検証Validate a DAC Package
DAC パッケージの内容をフォルダーに配置し、そのフォルダーで、DAC を実稼働サーバーに配置する前に DAC の動作内容をデータベース管理者が確認できるようにする方法について説明します。Describes how to place the contents of a DAC package into a folder where a database administrator can review what the DAC does before deploying it to a production server. DAC パッケージのアンパックUnpack a DAC Package
ウィザードを使用して既存のデータベースを配置する方法について説明します。Describes how to use a wizard to deploy an existing database. ウィザードでは DAC を使用して配置を実行します。The wizard uses DACs to perform the deployment. DAC を使用したデータベースの配置Deploy a Database By Using a DAC

参照See also

SQL Server オブジェクトとバージョンの DAC サポートDAC Support For SQL Server Objects and Versions