데이터 계층 응용 프로그램Data-tier Applications

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

대부분의 데이터베이스 응용 프로그램 수명 주기에는 응용 프로그램 업데이트 및 유지 관리 활동을 위해 개발자 및 DBA의 스크립트 공유 및 교환과 임시 통합 정보가 포함됩니다.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 Data Tools 데이터베이스 프로젝트에서 데이터베이스를 작성한 후 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가 이전에 SQL Server Management Studio를 사용하여 배포된 데이터베이스를 DACPAC를 통해 업그레이드할 수 있습니다.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. DAC는 데이터 계층 개발자 및 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 작업 중 하나를 통해 암시적으로 등록되어 있어야 합니다.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 작업은 SQL Server 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 Server 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 및 SQL Server 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 2012SQL Server 2012 또는 SQL Server 2017SQL Server 2017의 도구로 생성된 DACPAC 파일을 읽을 수 없습니다.DAC tools from SQL Server 2008 R2 cannot read DACPAC files generated by tools from SQL Server 2012SQL Server 2012 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 Data Tools 데이터베이스 프로젝트를 사용하여 데이터베이스를 디자인할 수 있습니다.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 Data Tools는 또한 연결되지 않은 클라이언트 쪽 데이터베이스 응용 프로그램 개발을 위한 로컬 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 데이터베이스SQL Database 의 DBA는 DAC 작업을 위해 SQL Azure용 관리 포털을 사용할 수 있습니다.In addition, the DBA for a SQL 데이터베이스SQL 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:

  • 추출 – 사용자가 데이터베이스를 DACPAC로 추출할 수 있습니다.EXTRACT – the user can extract a database into a DACPAC.

  • 배포 - 사용자가 DACPAC를 호스트 서버에 배포할 수 있습니다.DEPLOY – the user can deploy a DACPAC to a host server. SQL Server Management Studio 또는 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 – the user can register a database as a data-tier application.

  • 등록 취소 - 이전에 DAC로 등록된 데이터베이스를 등록 취소할 수 있습니다.UNREGISTER – a database previously registered as a DAC can be unregistered.

  • 업그레이드 - 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.

BACPACBACPAC

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는 스키마와 데이터를 캡처하는 데 중점적으로 사용되며 다음의 두 가지 주요 작업을 지원합니다.A BACPAC, on the other hand, is focused on capturing schema and data supporting two main operations:

  • 내보내기- 사용자가 데이터베이스의 스키마 및 데이터를 BACPAC로 내보낼 수 있습니다.EXPORT– The user can export the schema and the data of a database to a BACPAC.

  • 가져오기 - 사용자가 스키마 및 데이터를 호스트 서버에 있는 새 데이터베이스로 가져올 수 있습니다.IMPORT – The user can import the schema and the data into a new database in the host server.

    SQL Server Management Studio, Azure 포털 및 DACFx API와 같은 데이터베이스 관리 도구에서는 이 두 기능이 모두 지원됩니다.Both these capabilities are supported by the database management tools: SQL Server Management Studio, the Azure Portal, and the DACFx API.

사용 권한Permissions

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 보관 파일(.bacpac)을 사용하여 DAC 논리 복원을 수행하거나, DAC를 데이터베이스 엔진Database Engine 또는 SQL 데이터베이스SQL Database의 다른 인스턴스로 마이그레이션하는 방법에 대해 설명합니다.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 데이터베이스SQL 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 패키지의 내용 및 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 패키지 내용을 폴더에 넣는 방법에 대해 설명합니다.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