데이터 계층 응용 프로그램 구현

DAC(데이터 계층 응용 프로그램)는 응용 프로그램을 지원하는 데 필요한 SQL Server 데이터베이스 엔진 스키마 및 개체를 정의합니다. 다음 두 프로세스 중 하나를 사용하여 DAC를 구현할 수 있습니다.

  • Microsoft Visual Studio 2010에서 SQL Server 데이터 계층 응용 프로그램 프로젝트를 사용하여 DAC를 작성하고 빌드할 수 있습니다.

  • SQL Server Management Studio에서 데이터 계층 응용 프로그램 추출 마법사를 사용하여 기존 데이터베이스에서 DAC를 추출할 수 있습니다.

추출 및 빌드 작성 프로세스는 모두 개체 및 메타데이터를 지정하는 DAC 정의를 생성합니다. DAC 정의는 DAC 패키지로 빌드됩니다. 이 패키지는 DAC에 포함된 모든 개체 및 정책 정의의 매니페스트가 포함되는 파일입니다. DAC 패키지는 다음과 같은 용도로 사용할 수 있습니다.

  • 현재 버전의 DAC를 데이터베이스 엔진 및 SQL Azure의 개발, 테스트 및 프로덕션 인스턴스로 배포합니다. 데이터 계층 응용 프로그램 배포 마법사를 사용하여 새 DAC 인스턴스를 배포합니다. 데이터 계층 응용 프로그램 업그레이드 마법사를 사용하여 이전 버전의 DAC를 사용하여 배포된 기존 DAC 인스턴스를 업그레이드합니다.

  • Visual Studio에서 새 SQL Server 데이터 계층 응용 프로그램 프로젝트에 DAC를 가져와 다음 버전의 DAC 개발을 시작합니다.

개발 프로세스의 데이터 계층 응용 프로그램

DAC는 Visual Studio에서 DAC 프로젝트를 사용하여 개발됩니다. DAC 프로젝트는 데이터 계층 개체 개발과 이 개체를 사용하도록 코딩되는 응용 프로그램의 개발 환경이 밀접하게 통합되도록 합니다. 데이터베이스 개발자는 Visual Studio에서 DAC 프로젝트를 사용하여 DAC를 작성합니다. DAC 프로젝트는 Visual Studio Team System에서 전체 응용 프로그램 개발 솔루션에 통합할 수 있습니다. 응용 프로그램 개발자가 응용 프로그램 코드를 작성하면 데이터베이스 개발자는 DAC의 데이터 계층 개체 정의를 코딩합니다.

새 응용 프로그램의 경우 데이터베이스 개발자는 DAC 프로젝트를 만든 다음 개체가 개발되면 이 프로젝트에 추가하기 시작합니다. 기존 응용 프로그램의 새 버전에 대한 프로젝트를 시작할 때 데이터베이스 개발자는 응용 프로그램에서 사용하는 현재 데이터베이스에서 DAC 패키지를 추출하고 이를 DAC 프로젝트로 가져올 수 있습니다.

개발자는 다음 요소를 DAC 프로젝트에 추가할 수 있습니다.

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

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

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

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

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

데이터베이스 개발자는 테스트를 위해 DAC 프로젝트를 데이터베이스 엔진의 테스트 인스턴스로 배포할 수 있습니다. 또는 DAC 패키지에 DAC 정의를 만드는 DAC 프로젝트를 빌드할 수 있습니다. DAC 정의에는 DAC 프로젝트에 정의된 모든 요소에 대한 메타데이터가 포함됩니다. DAC 패키지는 DAC 정의를 포함하는 압축된 XML 파일이며 DAC를 배포하거나 업그레이드하는 데 사용됩니다. 개발자와 테스터는 데이터 계층 응용 프로그램 배포 마법사를 사용하여 테스트 시스템에 DAC를 배포할 수 있습니다.

응용 프로그램의 개발이 완료되면 응용 프로그램 프로젝트가 응용 프로그램 실행 파일을 만들기 위해 빌드되는 것처럼 DAC 프로젝트도 프로덕션 버전의 DAC 패키지를 만들기 위해 빌드됩니다. 이 DAC 패키지는 프로덕션 데이터베이스 관리자에게 넘겨져 프로덕션 환경에서 실행되는 데이터베이스 엔진 인스턴스 또는 SQL Azure로 배포됩니다.

DAC 버전이 프로덕션 환경으로 배포되면 다음 버전의 DAC 개발을 시작할 수 있습니다. 데이터베이스 개발자는 해당 버전에 있는 모든 데이터 계층 개체의 정의를 사용하여 새로운 버전의 DAC 프로젝트를 만듭니다. 프로젝트가 새 DAC 패키지로 빌드되면 동일한 패키지를 사용하여 새 DAC 인스턴스를 배포하거나 기존 인스턴스를 새 버전으로 업그레이드할 수 있습니다. 데이터 계층 응용 프로그램 업그레이드 마법사는 기존 DAC 인스턴스와 DAC 패키지의 스키마를 비교하고 기존 DAC 인스턴스를 새 버전의 DAC로 변환하는 데 필요한 동작을 동적으로 수행합니다.

Visual Studio 설명서에서 DAC 프로젝트에 대한 자세한 내용을 보려면 데이터 계층 응용 프로그램 생성 및 관리(Creating and Managing Data-tier Applications)를 참조하십시오.

데이터베이스에서 DAC 추출

데이터 계층 응용 프로그램 추출 마법사를 사용하여 기존 데이터베이스를 기반으로 DAC 정의를 작성할 수 있습니다. DAC 정의에는 데이터베이스의 모든 개체를 정의하는 메타데이터, 데이터베이스의 보안 주체로 매핑되는 모든 로그인 및 데이터베이스 데이터 정렬 및 호환성 수준이 포함되어 있습니다. DAC 정의에는 원본 데이터베이스의 사용자 데이터는 포함되지 않습니다. DAC 정의는 DAC 패키지 파일로 빌드됩니다.

마법사는 데이터 계층 응용 프로그램에서 지원되는 개체만 추출할 수 있습니다. DAC 이름 및 버전과 같은 속성을 지정하면 마법사가 데이터베이스에서 모든 개체를 로드하고 이러한 개체들이 DAC에서 지원되는지 확인합니다. 그런 다음 개체를 3개 범주로 그룹화한 요약 페이지를 표시합니다.

  • 빨간색으로 된 잘못된 항목 아이콘이 있는 개체는 DAC에서 지원되지 않습니다.

  • 노란색 경고 아이콘이 있는 개체의 경우 개체 자체는 DAC에서 지원되지만 지원되지 않는 개체에 대해 종속성이 있습니다.

  • 녹색 성공 아이콘이 있는 개체는 DAC에서 지원되며, DAC에서 지원되지 않는 개체에 대해 종속성이 없습니다.

마법사는 DAC에서 지원되지 않는 개체를 발견하면 요약 보고서에 이러한 개체를 나열하고 DAC 패키지를 만들지 않습니다. 모든 개체에 녹색 성공 아이콘이 있으면 DAC 패키지 만들기 단계로 넘어갈 수 있습니다.

추출된 DAC 패키지는 다음과 같은 용도로 사용할 수 있습니다.

  • Visual Studio에서 DAC를 DAC 프로젝트로 가져옵니다. 데이터베이스 개발자는 여기서 다음 버전의 DAC에 대한 개발을 시작할 수 있습니다.

  • DAC의 새 인스턴스를 배포합니다.

  • 이전에 배포한 버전의 DAC를 업그레이드합니다.

지원되는 개체에 대한 자세한 내용은 SQL Server 개체 및 버전에 대한 DAC 지원를 참조하십시오.

마법사를 시작하는 방법은 방법: 데이터베이스에서 DAC 추출을 참조하십시오.

로그인 암호

보안을 개선하기 위해 SQL Server 인증 로그인은 암호 없이 DAC 패키지에 저장됩니다. 패키지가 배포 또는 업그레이드되면 생성된 암호와 함께 비활성 로그인이 생성됩니다. 로그인을 활성화하려면 ALTER ANY LOGIN 권한이 있는 로그인을 사용하여 로그인하고 ALTER LOGIN을 사용하여 로그인을 활성화하여 사용자에게 알려 줄 수 있는 새 암호를 할당합니다. Windows 인증 로그인의 경우 암호가 SQL Server에서 관리되지 않으므로 이 과정이 필요 없습니다.