데이터 계층 응용 프로그램 이해

DAC(데이터 계층 응용 프로그램)는 응용 프로그램에 사용되는 모든 데이터베이스 및 인스턴스 개체가 포함된 엔터티입니다. DAC는 데이터 계층 개체를 개별적으로 관리할 필요 없이 작성, 배포 및 관리할 수 있는 단일 단위를 제공합니다. DAC는 연결된 응용 프로그램 코드의 개발 환경에 데이터 계층 개발 솔루션이 더 밀접하게 통합되도록 지원합니다. 또한 관리자에게 시스템의 리소스 사용에 대한 응용 프로그램 수준 보기를 제공합니다.

데이터 계층 응용 프로그램 작업

다음 프로세스를 사용하여 DAC 작업을 수행할 수 있습니다.

  • 먼저 연결된 응용 프로그램에서 사용할 개체를 지정하는 DAC 유형 또는 DAC 정의를 만듭니다. 그런 다음 DAC 정의를 DAC를 배포 및 업그레이드하는 데 사용되는 파일인 DAC 패키지로 빌드합니다. DAC 정의 및 패키지를 만드는 방법에는 두 가지가 있습니다.

    • Microsoft Visual Studio 2010에서 데이터 계층 응용 프로그램 프로젝트를 열고 DAC를 구성하는 개체를 지정합니다. DAC 프로젝트를 빌드하면 Visual Studio가 DAC 정의를 컴파일하여 DAC 패키지에 저장합니다.

    • 데이터 계층 응용 프로그램 추출 마법사를 사용하여 기존의 데이터베이스에서 DAC 정의를 추출하고 DAC 패키지를 만듭니다.

    자세한 내용은 데이터 계층 응용 프로그램 구현을 참조하십시오.

  • 데이터 계층 응용 프로그램 배포 마법사를 사용하여 DAC 패키지를 데이터베이스 엔진 인스턴스로 배포합니다. DAC 패키지의 배포는 일반적으로 응용 프로그램 실행 파일의 배포에 맞게 조정됩니다. 배포 과정에서 만들어지는 DAC 인스턴스는 두 가지 주요 부분으로 이루어져 있습니다.

    • DAC 정의는 msdb 시스템 데이터베이스(SQL Azure의 master 데이터베이스)에 저장됩니다.

    • 사용자 데이터베이스는 DAC 정의에 지정된 개체를 사용하여 만들어지고 채워집니다.

    데이터베이스 엔진 인스턴스가 SQL Server 유틸리티의 관리되는 인스턴스인 경우 DAC는 유틸리티 제어 지점에 배포된 DAC로 업로드됩니다.

    자세한 내용은 데이터 계층 응용 프로그램 배포를 참조하십시오.

  • 응용 프로그램은 DAC와 연결된 데이터베이스에 연결됩니다. 관리자는 설정된 프로시저를 사용하여 DAC와 연결된 데이터베이스를 모니터링하고 관리할 수 있습니다. 그러나 DAC 자체에서도 추가 정보를 얻을 수 있습니다.

    • SQL Server Management Studio(SSMS) 유틸리티 탐색기배포된 데이터 계층 응용 프로그램 노드는 관리자가 데이터 계층 응용 프로그램 인스턴스의 상태를 더 신속하게 평가하는 데 유용한 응용 프로그램 중심의 리소스 사용 보고서를 보여 줍니다.

    • Management Studio 개체 탐색기데이터 계층 응용 프로그램 노드는 각 DAC 인스턴스의 속성을 보고합니다.

  • DAC는 데이터베이스 버전 업그레이드 지원 프로세스를 간소화합니다. Transact-SQL 스크립트를 사용하여 데이터베이스를 배포할 때 데이터베이스 개발자는 첫 번째 배포 후 각 데이터베이스 버전별로 두 개의 스크립트 집합을 작성해야 합니다. 한 스크립트 집합은 기존의 데이터베이스를 새 버전으로 업그레이드하는 데 사용하고, 다른 집합은 새 데이터베이스를 설치하는 데 사용할 수 있습니다. DAC를 사용할 때 데이터베이스 개발자는 새 응용 프로그램 버전에서 사용하는 스키마를 설명하는 하나의 DAC 패키지만 빌드하면 됩니다. 데이터 계층 응용 프로그램 배포 마법사에서 이 패키지를 사용하여 새 DAC 인스턴스를 설치할 수 있습니다. 데이터 계층 응용 프로그램 업그레이드 마법사에서 동일한 패키지를 사용하여 기존의 DAC 인스턴스를 업그레이드할 수 있습니다. 데이터 계층 응용 프로그램 업그레이드 마법사는 두 스키마를 비교하고 기존의 DAC 인스턴스를 새 버전의 DAC로 변환하는 데 필요한 동작을 동적으로 수행합니다.

    자세한 내용은 데이터 계층 응용 프로그램 업그레이드를 참조하십시오.

  • 데이터 계층 응용 프로그램 삭제 마법사를 사용하여 데이터베이스 엔진 인스턴스에서 DAC를 삭제할 수 있습니다.

DAC 빌드 및 사용에 대한 자세한 내용은 데이터 계층 응용 프로그램 자습서를 참조하십시오.

데이터 계층 응용 프로그램 요소

DAC 정의에는 다음과 같은 요소가 포함됩니다.

  • DAC의 특징을 정의하는 DAC 속성. 예를 들어 각 DAC에는 응용 프로그램 이름 속성 및 버전 속성이 있으며 이러한 속성의 값은 일반적으로 연결된 응용 프로그램의 이름 및 버전 번호와 관련이 있습니다.

  • 응용 프로그램에서 사용하는 모든 데이터베이스 개체의 정의(예: 스키마, 테이블, 뷰 및 저장 프로시저). SQL Server 2008 R2 또는 Visual Studio 2010을 사용하여 생성된 DAC에서는 SQL Server 개체 중 일부를 지원하지 않습니다. 자세한 내용은 SQL Server 개체 및 버전에 대한 DAC 지원을 참조하십시오.

  • 데이터베이스 개체와 관련이 있고 응용 프로그램에서 사용하는 인스턴스 수준 개체(예: 로그인)의 정의.

  • 데이터베이스 엔진인스턴스가 DAC를 호스팅하기 위해 충족해야 하는 필수 조건을 정의하는 서버 선택 정책. 이 정책은 서버 선택 패싯을 사용하여 정의되며 인스턴스의 버전 및 기본 데이터 정렬과 같은 조건을 평가할 수 있습니다.

  • Visual Studio에서 DAC 정의를 작성할 때 여기에 포함할 수 있는 파일 및 스크립트. 예를 들어 응용 프로그램 문서, 의미 있는 테스트 데이터를 만드는 방법을 지정하는 데이터 생성 계획 또는 배포 전 및 배포 후 스크립트가 있습니다.

데이터 계층 응용 프로그램 프로젝트

DAC는 일반적으로 데이터베이스 개발자가 Visual Studio 2010에서 데이터 계층 응용 프로그램 프로젝트를 사용하여 배포합니다. 데이터베이스 개발자는 개발 중인 DAC가 지원할 응용 프로그램에 필요한 데이터 계층 개체를 정의합니다. 응용 프로그램 개발자나 테스트 팀을 위한 DAC가 준비되면 데이터베이스 개발자는 DAC 프로젝트를 빌드하며, 이 프로젝트는 DAC를 배포하는 데 사용할 수 있는 DAC 패키지 파일을 만듭니다.

DAC 프로젝트에 대한 자세한 내용은 데이터 계층 응용 프로그램 구현을 참조하십시오.

데이터 계층 응용 프로그램 패키지

DAC를 배포할 준비가 되면 DAC 정의가 포함된 파일인 DAC 패키지로 빌드합니다. DAC 패키지는 실행 파일이 응용 프로그램 코드의 배포 단위인 것과 마찬가지로 단일 배포 단위입니다. DAC 패키지는 일반적으로 응용 프로그램 실행 파일과 함께 빌드됩니다. 시스템 관리자가 실행 파일을 응용 프로그램 계층이나 클라이언트 시스템으로 배포하면 데이터베이스 관리자가 연결된 DAC 패키지를 데이터베이스 엔진 인스턴스로 배포합니다. 

예를 들어 한 배포 팀이 Finance라는 3계층 응용 프로그램을 개발 중이라고 가정해 봅니다. 이 응용 프로그램의 빌드 1.0.1.123은 모든 승인 테스트를 통과하고 프로덕션 환경으로 배포될 준비를 마쳤습니다. 응용 프로그램 개발자는 프로덕션 응용 프로그램 서버로 배포할 버전 1.0.1.123 Finance.exe 파일을 프로덕션 시스템 관리자에게 넘겨줍니다. 데이터베이스 개발자는 데이터베이스 엔진의 프로덕션 인스턴스로 배포할 버전 1.0.1.123 Finance.dacpac 파일을 프로덕션 데이터베이스 관리자에게 넘겨줍니다.

DAC 패키지는 XML 파일이 여러 개 포함된 압축 파일입니다. DAC 패키지 파일 내용에 대한 자세한 내용은 Microsoft SQL Server 파일 형식 문서(Microsoft SQL Server File Format Documents)를 참조하십시오.

데이터 계층 응용 프로그램 인스턴스

데이터베이스 엔진 인스턴스로 배포되는 DAC는 DAC 인스턴스를 형성합니다.

  • 데이터베이스 엔진 인스턴스의 기본 데이터베이스 속성을 사용하여 데이터베이스가 만들어집니다 DAC에 정의된 데이터베이스 개체는 새 데이터베이스에 만들어집니다.

  • DAC에 정의된 모든 인스턴스 수준 개체(예: 로그인)가 만들어집니다.

  • DAC 인스턴스에 대한 원래 DAC 정의 및 메타데이터는 msdb 시스템 데이터베이스(SQL Azure의 master 데이터베이스)에 저장됩니다.

인스턴스가 배포된 후에 사용자는 개체 작업을 시작할 수 있으며, DAC를 위해 생성된 데이터베이스에 데이터를 추가할 수 있습니다.

기존 데이터베이스의 데이터 계층 응용 프로그램 만들기

데이터 계층 응용 프로그램 추출 마법사를 사용하여 기존 데이터베이스에서 DAC 정의를 추출할 수 있습니다. DAC 정의에는 데이터베이스에서 선택한 개체 및 연결된 인스턴스 수준의 개체(예: 데이터베이스 사용자에 매핑된 로그인)가 포함되어 있습니다. 마법사는 DAC 정의를 DAC 패키지로 빌드합니다. 그런 다음 Visual Studio에서 추출된 DAC 패키지를 다음 버전의 응용 프로그램에 대한 개발이 시작되는 DAC 프로젝트로 가져옵니다. 또한 추출된 패키지를 사용하여 DAC를 다른 데이터베이스 엔진 인스턴스로 배포할 수 있습니다.

데이터 계층 응용 프로그램 등록 마법사를 사용하여 기존 데이터베이스의 DAC를 등록할 수 있습니다. 이 마법사는 기존 데이터베이스의 개체를 포함하는 DAC 정의를 만든 다음 이 정의를 msdb 데이터베이스(SQL Azure의 master 데이터베이스)에 저장합니다. 데이터베이스 엔진 인스턴스가 SQL Server 유틸리티의 관리되는 인스턴스인 경우 DAC 등록은 배포된 DAC로 유틸리티 제어 지점에 업로드됩니다.