데이터 계층 애플리케이션 배포

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

마법사 또는 PowerShell 스크립트를 사용하여 DAC 패키지에서 데이터베이스 엔진 또는 Azure SQL Database의 기존 인스턴스로 DAC(데이터 계층 애플리케이션)를 배포합니다.

배포 프로세스는 시스템 데이터베이스(SQL Database)mastermsdb DAC 정의를 저장하여 DAC 인스턴스를 등록하고, 데이터베이스를 만든 다음, 해당 데이터베이스를 DAC에 정의된 모든 데이터베이스 개체로 채웁니다.

동일한 DAC 패키지를 여러 번 배포

동일한 DAC 패키지를 데이터베이스 엔진의 단일 인스턴스에 여러 번 배포할 수 있지만 배포를 한 번에 하나씩 실행해야 합니다. 각 배포에 대해 지정된 DAC 인스턴스 이름은 데이터베이스 엔진 인스턴스 내에서 고유해야 합니다.

데이터베이스 옵션 및 설정

기본적으로 배포 중에 만든 데이터베이스에는 다음을 제외한 CREATE DATABASE 문의 모든 기본 설정이 있습니다.

  • 데이터베이스 데이터 정렬 및 호환성 수준은 DAC 패키지에 정의된 값으로 설정됩니다. SQL Server 개발자 도구의 데이터베이스 프로젝트에서 빌드된 DAC 패키지는 데이터베이스 프로젝트에 설정된 값을 사용합니다. 기존 데이터베이스에서 추출된 패키지는 원래 데이터베이스의 값을 사용합니다.

  • 데이터베이스 이름과 파일 경로와 같은 일부 데이터베이스 설정을 구성 업데이트 페이지에서 조정할 수 있습니다. SQL Database에 배포할 때는 파일 경로를 설정할 수 없습니다.

TRUSTWORTHY, DB_CHAINING 및 HONOR_BROKER_PRIORITY 같은 일부 데이터베이스 옵션은 배포 프로세스의 일부로 조정할 수 없습니다. 파일 그룹 수 또는 파일의 수 및 크기와 같은 물리적 속성은 배포 프로세스의 일부로 변경할 수 없습니다. 배포가 완료되면 ALTER DATABASE 문, SQL Server Management Studio 또는 SQL Server PowerShell을 사용하여 데이터베이스를 조정할 수 있습니다.

제한 사항

DAC는 SQL Database 또는 SQL Server 2005(9.x) SP4(서비스 팩 4) 이상을 실행하는 데이터베이스 엔진 인스턴스에 배포할 수 있습니다. 이후 버전을 사용하여 DAC를 만드는 경우 DAC에 SQL Server 2005(9.x)에서 지원되지 않는 개체가 포함될 수 있습니다. 이러한 DAC는 SQL Server 2005(9.x)의 인스턴스에 배포할 수 없습니다.

보안 및 권한

인증 로그인은 암호 없이 DAC 패키지에 저장됩니다. 패키지를 배포하거나 업그레이드하면 생성된 암호를 사용하여 로그인이 비활성화된 로그인으로 만들어집니다. 로그인을 사용하도록 설정하려면 ALTER ANY LOGIN 권한이 있는 로그인을 사용하여 로그인하고 ALTER LOGIN을 사용하여 로그인을 사용하도록 설정하고 사용자에게 전달할 수 있는 새 암호를 할당합니다. 암호는 SQL Server에서 관리되지 않으므로 Windows 인증 로그인에는 필요하지 않습니다.

sysadmin 또는 serveradmin 고정 서버 역할의 멤버를 통하거나 dbcreator 고정 서버 역할에 포함되고 ALTER ANY LOGIN 권한이 있는 로그인을 통해서만 DAC를 배포할 수 있습니다. sa라는 기본 제공 SQL Server 시스템 관리자 계정도 DAC를 배포할 수 있습니다.

로그인을 사용하여 DAC를 SQL Database에 배포하려면 loginmanager 또는 serveradmin 역할의 멤버 자격이 필요합니다. SQL Database에 로그인하지 않고 DAC를 배포하려면 dbmanager 또는 serveradmin 역할의 멤버 자격이 필요합니다.

마법사를 사용하여 DAC 배포

  1. 개체 탐색기에서 DAC를 배포하려는 인스턴스의 노드를 확장합니다.

  2. 데이터베이스 노드를 마우스 오른쪽 단추로 클릭한 다음 데이터 계층 애플리케이션 배포를 선택합니다.

  3. 마법사 대화 상자를 완료하고 완료를 선택합니다.

아래의 일부 마법사 페이지에 대한 자세한 정보:

DAC 패키지 페이지 선택

배포할 데이터 계층 애플리케이션이 포함된 DAC 패키지를 지정합니다. 페이지는 세 가지 상태로 전환됩니다.

DAC 패키지 선택

배포할 DAC 패키지를 선택합니다. DAC 패키지는 유효한 DAC 패키지 파일이어야 하며 .dacpac 확장명이 있어야 합니다.

DAC 패키지 - 배포할 데이터 계층 애플리케이션이 포함된 DAC 패키지의 경로와 파일 이름을 지정합니다. 상자 오른쪽에서 찾아보기 단추를 선택하여 DAC 패키지의 위치를 찾아볼 수 있습니다.

애플리케이션 이름 - DAC를 만들거나 데이터베이스에서 추출할 때 할당된 DAC 이름을 표시하는 읽기 전용 입력란입니다.

버전 - DAC를 만들거나 데이터베이스에서 추출할 때 할당된 버전을 표시하는 읽기 전용 입력란입니다.

설명 - 데이터베이스에서 DAC를 작성하거나 추출할 때 작성된 설명을 표시하는 읽기 전용 상자입니다.

DAC 패키지 유효성 검사

선택한 파일이 유효한 DAC 패키지인지 마법사에서 확인하는 동안 진행률 표시줄이 표시됩니다. DAC 패키지의 유효성이 확인되면 마법사는 유효성 검사 결과를 검토할 수 있는 패키지 선택 페이지의 최종 버전으로 진행합니다. 파일이 유효한 DAC 패키지가 아닌 경우 마법사는 DAC 패키지 선택 상태로 유지됩니다. 다른 유효한 DAC 패키지를 선택하거나 마법사를 취소하고 새 DAC 패키지를 생성합니다.

정책 검토 페이지

DAC 서버 선택 정책(사용되는 경우)을 평가한 결과를 검토합니다. DAC 서버 선택 정책은 선택 사항이며 Visual Studio에서 만들 때 DAC에 할당됩니다. 이 정책은 서버 선택 정책 패싯을 사용하여 DAC를 호스트하기 위해 데이터베이스 엔진 인스턴스가 충족해야 하는 조건을 지정합니다.

정책 조건의 평가 결과 - DAC 배포 정책 조건이 성공했는지 여부를 보여 줍니다. 각 조건 평가 결과는 별도의 줄에 보고됩니다.

SQL Database에 DAC를 배포할 때 다음 서버 선택 정책은 항상 false로 평가됩니다. 운영 체제 버전, 언어, 명명된 파이프 사용, 플랫폼 및 tcp 사용.

정책 위반을 무시합니다. - 정책 조건이 한 개 이상 위반되더라도 배포를 진행하려면 이 확인란을 사용합니다. 실패한 모든 조건이 DAC의 성공적인 작업을 방해하지 않는 경우에만 이 옵션을 선택합니다.

구성 업데이트 페이지

배포된 DAC 인스턴스의 이름과 배포에서 만든 데이터베이스의 이름을 지정하고 데이터베이스 옵션을 설정합니다.

데이터베이스 이름: - 배포에서 만들 데이터베이스의 이름을 지정합니다. 기본은 DAC가 추출된 원본 데이터베이스 이름입니다. 이름은 데이터베이스 엔진 인스턴스 내에서 고유해야 하며 데이터베이스 엔진 식별자에 대한 규칙을 준수해야 합니다.

데이터베이스 이름을 변경하면 데이터 파일 및 로그 파일의 이름이 새 값과 일치하도록 변경됩니다.

데이터베이스 이름은 DAC 인스턴스의 이름으로도 사용됩니다. 인스턴스 이름은 개체 탐색기의 데이터 계층 애플리케이션 노드 아래에 있는 DAC의 노드에 표시됩니다.

다음 옵션은 SQL Database에 적용되지 않으며 SQL Database에 배포할 때 표시되지 않습니다.

기본 데이터베이스 위치 사용 - 데이터베이스 엔진 인스턴스의 기본 위치에 데이터베이스 데이터 및 로그 파일을 만들려면 이 옵션을 선택합니다. 파일 이름은 데이터베이스 이름을 사용하여 빌드됩니다.

데이터베이스 파일 지정 - 데이터 및 로그 파일 의 다른 위치 또는 이름을 지정하려면 이 옵션을 선택합니다.

데이터 파일 경로 및 이름: - 데이터 파일의 전체 경로 및 파일 이름을 지정합니다. 상자가 기본 경로 및 파일 이름으로 채워집니다. 상자에서 문자열을 편집하여 기본값을 변경하거나 찾아보기 단추를 사용하여 데이터 파일을 배치할 폴더로 이동합니다.

로그 파일 경로 및 이름: - 로그 파일의 전체 경로와 파일 이름을 지정합니다. 상자가 기본 경로 및 파일 이름으로 채워집니다. 상자에서 문자열을 편집하여 기본값을 변경하거나 찾아보기 단추를 사용하여 로그 파일을 배치할 폴더로 이동합니다.

요약 페이지

이 페이지를 사용하여 DAC를 배포할 때 마법사가 수행하는 작업을 검토할 수 있습니다.

DAC를 배포하는 데 사용되는 설정은 다음과 같습니다. - 표시된 정보를 검토하여 수행된 작업이 올바른지 확인합니다. 창에는 선택한 DAC 패키지와 배포하도록 선택한 DAC 인스턴스 이름이 표시됩니다. 창에는 DAC와 연결된 데이터베이스를 만들 때 사용할 설정도 표시됩니다.

배포 페이지

이 페이지에서는 배포 작업의 성공 또는 실패를 보고합니다.

DAC를 배포하는 중 - DAC를 배포하기 위해 수행한 각 동작의 성공 또는 실패를 보고합니다. 정보를 검토하여 각 작업의 성공 또는 실패를 확인합니다. 오류가 발생한 모든 작업에는 결과 열에 링크가 있습니다. 링크를 선택하여 해당 작업에 대한 오류 보고서를 봅니다.

보고서 저장 - 배포 보고서를 HTML 파일로 저장하려면 이 단추를 선택합니다. 파일은 모든 동작에서 생성된 모든 오류를 비롯하여 각 동작의 상태를 보고합니다. 기본 폴더는 Windows 계정의 Documents 폴더에 있는 SQL Server Management Studio\DAC Packages 폴더입니다.

PowerShell 사용

  1. SMO Server 개체를 만들고 DAC를 배포하려는 인스턴스로 설정합니다.

  2. ServerConnection 개체를 열고 동일한 인스턴스에 연결합니다.

  3. System.IO.File을 사용하여 DAC 패키지 파일을 로드합니다.

  4. add_DacActionStartedadd_DacActionFinished 사용하여 DAC 배포 이벤트를 구독합니다.

  5. DatabaseDeploymentProperties를 설정합니다.

  6. DacStore.Install 메서드를 사용하여 DAC를 배포합니다.

  7. DAC 패키지 파일을 읽는 데 사용되는 파일 스트림을 닫습니다.

다음 예제에서는 MyApplication.dacpac 패키지의 DAC 정의를 사용하여 데이터베이스 엔진의 기본 인스턴스에 MyApplication이라는 DAC를 배포합니다.

PowerShell 예제

다음 예제에서는 MyApplication.dacpac 패키지의 DAC 정의를 사용하여 데이터베이스 엔진의 기본 인스턴스에 MyApplication이라는 DAC를 배포합니다.

## Set a SMO Server object to the default instance on the local computer.
CD SQLSERVER:\SQL\localhost\DEFAULT
$server = Get-Item .
  
## Open a Common.ServerConnection to the same instance.
$serverConnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($server.ConnectionContext.SqlConnectionObject)
$serverConnection.Connect()
$dacStore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverConnection)
  
## Load the DAC package file.
$dacpacPath = "C:\MyDACs\MyApplication.dacpac"
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)
  
## Subscribe to the DAC deployment events.
$dacStore.add_DacActionStarted({Write-Host `n`nStarting at $(Get-Date) :: $_.Description})
$dacStore.add_DacActionFinished({Write-Host Completed at $(Get-Date) :: $_.Description})
  
## Deploy the DAC and create the database.
$dacName  = "MyApplication"
$evaluateTSPolicy = $true
$deployProperties = New-Object Microsoft.SqlServer.Management.Dac.DatabaseDeploymentProperties($serverConnection,$dacName)
$dacStore.Install($dacType, $deployProperties, $evaluateTSPolicy)
$fileStream.Close()

추가 정보