DAC 패키지 유효성 검사Validate a DAC Package

DAC 패키지를 프로덕션 환경에 배포하기 전에 내용을 검토하고 기존 DAC를 업그레이드하기 전에 업그레이드 동작의 유효성을 검사하는 것이 좋습니다.It is a good practice to review the contents of a DAC package before deploying it in production, and to validate the upgrade actions before upgrading an existing DAC. 사용자의 조직에서 개발되지 않은 패키지를 배포하는 경우에는 더욱 그렇습니다.This is especially true when deploying packages that were not developed in your organization.

  1. 시작하기 전에: 필수 구성 요소Before you begin: Prerequisites

  2. DAC를 업그레이드하려면 DAC 내용 보기, 데이터베이스 변경 내용 보기, 업그레이드 동작 보기, Compare DACsTo upgrade a DAC, using: View the Contents of a DAC, View Database Changes, View Upgrade Actions, Compare DACs

필수 구성 요소 Prerequisites

출처를 알 수 없거나 신뢰할 수 없는 DAC 패키지는 배포하지 않는 것이 좋습니다.We recommend that you do not deploy a DAC package from unknown or untrusted sources. 이러한 DAC에 포함된 악성 코드가 의도하지 않은 Transact-SQLTransact-SQL 코드를 실행하거나 스키마를 수정하여 오류가 발생할 수 있습니다.Such DACs could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema. 출처를 알 수 없거나 신뢰할 수 없는 DAC를 사용하기 전에 격리된 데이터베이스 엔진Database Engine 테스트 인스턴스에 이를 배포하고, 해당 데이터베이스에 대해 DBCC CHECKDB(Transact-SQL)를 실행하며, 저장 프로시저 또는 다른 사용자 정의 코드 같은 데이터베이스의 코드도 검사하세요.Before you use a DAC from an unknown or untrusted source, deploy it on an isolated test instance of the 데이터베이스 엔진Database Engine, run DBCC CHECKDB (Transact-SQL) on the database, and also examine the code, such as stored procedures or other user-defined code, in the database.

DAC 내용 보기 View the Contents of a DAC

데이터 계층 응용 프로그램(DAC) 패키지의 내용을 볼 수 있는 두 가지 메커니즘이 있습니다.There are two mechanisms for viewing the contents of a data-tier application (DAC) package. SQL Server Developer Tools의 DAC 프로젝트로 DAC 패키지를 가져올 수 있습니다.You can import the DAC package to a DAC project in SQL Server Developer Tools. 두 번째는 패키지 내용을 폴더에 압축을 푸는 것입니다.You can unpack the contents of the package to a folder.

SQL Server Developer Tools에서 DAC 보기View a DAC in SQL Server Developer Tools

  1. 파일 메뉴를 열고 새로 만들기를 선택한 다음 프로젝트...를 선택합니다.Open the File menu, select New, and then select Project….

  2. SQL Server 프로젝트 템플릿을 선택하고 이름, 위치솔루션 이름을 지정합니다.Select the SQL Server project template, and specify a Name, Location, and Solution name.

  3. 솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 속성...을 선택합니다.In Solution Explorer, right click the project node and select Properties….

  4. 프로젝트 설정 탭의 출력 유형 섹션에서 데이터 계층 응용 프로그램(.dacpac 파일) 확인란을 선택한 다음 속성 대화 상자를 닫습니다.On the Project Settings tab, in the Output Types section, select the Data-tier Application (.dacpac File) check box, and then close the properties dialog.

  5. 솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 데이터 계층 응용 프로그램 가져오기...를 선택합니다.In Solution Explorer, right click the project node and select Import Data-tier Application….

  6. 솔루션 탐색기 를 사용하여 서버 선택 정책과 배포 이전 및 배포 이후 스크립트와 같은 DAC의 모든 파일을 열 수 있습니다.Use Solution Explorer to open all of the files in the DAC, such as the server selection policy and the pre- and post-deployment scripts.

  7. 스키마 뷰 를 사용하여 스키마 내의 모든 개체를 검토할 수 있으며, 특히 함수나 저장 프로시저와 같은 개체 내의 코드를 검토할 수 있습니다.Use the Schema View to review all of the objects in the schema, particularly reviewing the code in objects such as functions or stored procedures.

    폴더에서 DAC 보기View a DAC in a Folder

  • Unpack a DAC Package의 지침에 따라 폴더에 DAC 패키지의 압축을 풉니다.Unpack the DAC package into a folder by following the instructions in Unpack a DAC Package.

  • Transact-SQLTransact-SQL데이터베이스 엔진Database Engine 쿼리 편집기에서 Management StudioManagement Studio스크립트를 열어서 내용을 확인합니다.View the contents of the Transact-SQLTransact-SQL scripts by opening them in the 데이터베이스 엔진Database Engine Query Editor in Management StudioManagement Studio.

  • 메모장 같은 도구에서 텍스트 파일의 내용 보기View the contents of the text files in tools such as notepad.

데이터베이스 변경 내용 보기 View Database Changes

현재 버전의 DAC를 프로덕션 환경에 배포한 이후에 연결된 데이터베이스를 직접 변경하여 새 버전의 DAC에 정의된 스키마와 충돌할 수 있습니다.After the current version of a DAC was deployed to production, changes may have been made directly to the associated database that might conflict with the schema defined in a new version of the DAC. 따라서 새 버전의 DAC로 업그레이드하기 전에 데이터베이스가 그런 식으로 변경되었는지 확인하세요.Before upgrading to a new version of the DAC, check to see if such changes have been made to the database.

마법사를 사용하여 데이터베이스 변경 내용 보기View Database Changes by Using a Wizard

  1. 새 버전의 DAC를 포함하는 DAC 패키지와 현재 배포된 DAC를 지정하여 데이터 계층 응용 프로그램 업그레이드 마법사를 실행합니다.Run the Upgrade Data-tier Application wizard, specifying the currently deployed DAC and the DAC package containing the new version of the DAC.

  2. 변경 내용 검색 페이지에서 데이터베이스에 대한 변경 내용 보고서를 검토합니다.On the Detect Change page, review the report of the changes that have been made to the database.

  3. 업그레이드를 중단하려면 취소 를 선택합니다.Select Cancel if you do not want to continue with the upgrade.

  4. 마법사 사용에 대한 자세한 내용은 데이터 계층 응용 프로그램 업그레이드를 참조하세요.For more information on using the wizard, see Upgrade a Data-tier Application.

    PowerShell을 사용하여 데이터베이스 변경 내용 보기View Database Changes by Using PowerShell

  5. SMO Server 개체를 만든 다음 보려는 DAC를 포함하는 인스턴스로 설정합니다.Create a SMO Server object and set it to the instance that contains the DAC to be viewed.

  6. ServerConnection 개체를 열고 동일한 인스턴스에 연결합니다.Open a ServerConnection object and connect to the same instance.

  7. DAC 이름을 변수로 지정합니다.Specify the DAC name in a variable.

  8. GetDatabaseChanges() 메서드를 사용하여 ChangeResults 개체를 검색하고 개체를 텍스트 파일에 파이핑하여 새 개체, 삭제된 개체 및 변경된 개체에 대한 간단한 보고서를 생성합니다.Use the GetDatabaseChanges() method to retrieve a ChangeResults object, and pipe the object to a text file to generate a simple report of new, deleted, and changed objects.

데이터베이스 변경 내용 보기 예(PowerShell)View Database Changes Example (PowerShell)

데이터베이스 변경 내용 보기 예(PowerShell)View Database Changes Example (PowerShell)

다음 예에서는 MyApplicaiton이라는 배포된 DAC에 대한 데이터베이스 변경 내용을 보고합니다.The following example reports any database changes that have been made in a deployed DAC named MyApplicaiton.

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = get-item .  

## Open a Common.ServerConnection to the same instance.  
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)  
$serverconnection.Connect()  
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)  

## Specify the DAC instance name.  
$dacName  = "MyApplication"  

## Generate the change list and save to file.  
$dacChanges = $dacstore.GetDatabaseChanges($dacName) | Out-File -Filepath C:\DACScripts\MyApplicationChanges.txt  

업그레이드 동작 보기 View Upgrade Actions

새 버전의 DAC 패키지를 사용하여 이전 DAC 패키지에서 배포된 DAC를 업그레이드하기 전에 업그레이드 동안 실행할 Transact-SQLTransact-SQL 문이 포함된 보고서를 생성한 다음 문을 검토할 수 있습니다.Before using a new version of a DAC package to upgrade a DAC that was deployed from an earlier DAC package, you can generate a report that contains the Transact-SQLTransact-SQL statements that will be run during the upgrade, and then review the statements.

마법사를 사용하여 업그레이드 동작 보고Report Upgrade Actions by Using a Wizard

  1. 새 버전의 DAC를 포함하는 DAC 패키지와 현재 배포된 DAC를 지정하여 데이터 계층 응용 프로그램 업그레이드 마법사를 실행합니다.Run the Upgrade Data-tier Application wizard, specifying the currently deployed DAC and the DAC package containing the new version of the DAC.

  2. 요약 페이지에서 업그레이드 동작 보고서를 검토합니다.On the Summary page, review the report of the upgrade actions.

  3. 업그레이드를 중단하려면 취소 를 선택합니다.Select Cancel if you do not want to continue with the upgrade.

  4. 마법사 사용에 대한 자세한 내용은 데이터 계층 응용 프로그램 업그레이드를 참조하세요.For more information on using the wizard, see Upgrade a Data-tier Application.

    PowerShell을 사용하여 업그레이드 동작 보고Report Upgrade Actions by Using PowerShell

  5. SMO Server 개체를 만든 다음 배포된 DAC를 포함하는 인스턴스로 설정합니다.Create a SMO Server object and set it to the instance that contains the deployed DAC.

  6. ServerConnection 개체를 열고 동일한 인스턴스에 연결합니다.Open a ServerConnection object and connect to the same instance.

  7. System.IO.File 을 사용하여 DAC 패키지 파일을 로드합니다.Use System.IO.File to load the DAC package file.

  8. DAC 이름을 변수로 지정합니다.Specify the DAC name in a variable.

  9. GetIncrementalUpgradeScript() 메서드를 사용하여 업그레이드를 실행할 Transact-SQL 문 목록을 가져온 다음 목록을 텍스트 파일에 파이핑합니다.Use the GetIncrementalUpgradeScript() method to get a list of the Transact-SQL statements an upgrade would run, and pipe the list to a text file.

  10. DAC 패키지 파일을 읽는 데 사용되는 파일 스트림을 닫습니다.Close the file stream used to read the DAC package file.

업그레이드 동작 보기 예(PowerShell)View Upgrade Actions Example (PowerShell)

업그레이드 동작 보기 예(PowerShell)View Upgrade Actions Example (PowerShell)

다음 예에서는 MyApplication이라는 DAC를 MyApplication2017.dacpac 파일에 정의된 스키마로 업그레이드하기 위해 실행하는 Transact-SQL 문에 대해 보고합니다.The following example reports the Transact-SQL statements that would be run to upgrading a DAC named MyApplicaiton to the schema defined in a MyApplication2017.dacpac file.

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = get-item .  

## Open a Common.ServerConnection to the same instance.  
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)  
$serverconnection.Connect()  
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)  

## Load the DAC package file.  
$dacpacPath = "C:\MyDACs\MyApplication2017.dacpac"  
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)  
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)  

## Specify the DAC instance name.  
$dacName  = "MyApplication"  

## Generate the upgrade script and save to file.  
$dacstore.GetIncrementalUpgradeScript($dacName, $dacType) | Out-File -Filepath C:\DACScripts\MyApplicationUpgrade.sql  

## Close the filestream to the new DAC package.  
$fileStream.Close()  

Compare DACs Compare DACs

DAC를 업그레이드하기 전에 데이터베이스와 인스턴스 수준 개체에서 현재와 새 DAC의 차이를 검토하는 것이 좋습니다.Before upgrading a DAC, it is a good practice to review the differences in the database and instance-level objects between the current and new DACs. 현재 DAC의 패키지 복사본이 없는 경우에는 현재 데이터베이스에서 패키지를 추출할 수 있습니다.If you do not have a copy of the package for the current DAC, you can extract a package from the current database.

두 DAC 프로젝트를 SQL Server Developer Tools의 DAC 프로젝트로 가져오면 스키마 비교 도구를 사용하여 두 DAC 간의 차이점을 분석할 수 있습니다.If you import both DAC packages into DAC projects in SQL Server Developer Tools, you can use the Schema Compare tool to analyze the differences between the two DACs.

또는 별도의 폴더에 DAC의 압축을 풉니다.Alternatively, unpack the DACs into separate folders. 그런 다음 WinDiff 유틸리티와 같은 비교 도구를 사용하여 차이를 분석할 수 있습니다.You can then use a difference tool, such as the WinDiff utility, to analyze the differences.

참고 항목See Also

데이터 계층 응용 프로그램 Data-tier Applications
데이터 계층 응용 프로그램 배포 Deploy a Data-tier Application
데이터 계층 응용 프로그램 업그레이드Upgrade a Data-tier Application