다음을 통해 공유


자습서: Azure에 SSIS(SQL Server Integration Services) 패키지 배포 및 실행

적용 대상: Azure Data Factory의 SQL Server SSIS Integration Runtime

이 자습서에서는 SSIS(SQL Server Integration Services) 프로젝트를 Azure SQL Database의 SSIS 카탈로그에 배포하고, Azure-SSIS Integration Runtime에서 패키지를 실행하며, 실행 중인 패키지를 모니터링하는 방법을 보여 줍니다.

필수 조건

시작하기 전에 SQL Server Management Studio 버전 17.2 이상이 설치되어 있는지 확인합니다. SSMS의 최신 버전을 다운로드하려면 SSMS(SQL Server Management Studio) 다운로드를 참조하세요.

또한 Azure에서 SSISDB 데이터베이스를 설정하고 Azure-SSIS Integration Runtime을 프로비전했는지 확인합니다. Azure에서 SSIS를 프로비전하는 방법에 대한 정보는 Azure에 SQL Server Integration Services 패키지 배포를 참조하세요.

Azure SQL Database의 경우 연결 정보보 가져오기

Azure SQL Database에서 패키지를 실행하려면 SSISDB(SSIS 카탈로그 데이터베이스)에 연결해야 하는 연결 정보를 가져옵니다. 다음 절차를 수행하려면 정규화된 서버 이름 및 로그인 정보가 필요합니다.

  1. Azure Portal에 로그인합니다.
  2. 왼쪽 메뉴에서 SQL 데이터베이스를 선택한 다음 SQL 데이터베이스 페이지에서 SSISDB 데이터베이스를 선택합니다.
  3. 데이터베이스의 개요 페이지에서 정규화된 서버 이름을 검토합니다. 복사하려면 클릭 옵션을 표시하려면 마우스로 서버 이름 위를 가리킵니다.
  4. Azure SQL Database 서버 로그인 정보를 잊은 경우, SQL Database 서버 페이지로 이동하여 서버 관리자 이름을 확인합니다. 필요한 경우 암호를 재설정할 수 있습니다.

SSISDB 데이터베이스에 연결

SQL Server Management Studio를 사용하여 Azure SQL Database 서버의 SSIS 카탈로그에 연결합니다. 자세한 내용과 스크린샷은 Azure에서 SSISDB 카탈로그 데이터베이스에 연결을 참조하세요.

기억해야 할 중요한 두 가지 항목은 다음과 같습니다. 이와 관련된 단계가 다음 절차에 설명되어 있습니다.

  • Azure SQL Database 서버의 정규화된 이름을 mysqldbserver.database.windows.net 형식으로 입력합니다.
  • 연결할 데이터베이스로 SSISDB를 선택합니다.

Important

Azure SQL Database 서버는 포트 1433에서 수신 대기합니다. 회사 방화벽 내에서 SQL Server 논리 서버로 연결을 시도하면 성공적인 연결을 위해 회사 방화벽에서 이 포트가 열려야 합니다.

  1. SQL Server Management Studio를 엽니다.

  2. 서버에 연결합니다. 서버에 연결 대화 상자에 다음 정보를 입력합니다.

    설정 제안 값 Description
    서버 유형 데이터베이스 엔진 이 값은 필수입니다.
    서버 이름 정규화된 서버 이름 이름은 mysqldbserver.database.windows.net 형식이어야 합니다. 서버 이름이 필요한 경우 Azure의 SSISDB 카탈로그 데이터베이스에 연결을 참조하세요.
    인증 SQL Server 인증 Windows 인증을 사용하여 Azure SQL Database에 연결할 수 없습니다.
    로그인 서버 관리자 계정 서버를 만들 때 지정한 계정입니다.
    암호 서버 관리자 계정의 암호 서버를 만들 때 지정한 암호입니다.
  3. SSISDB 데이터베이스에 연결합니다. 옵션을 선택하여 서버에 연결 대화 상자를 펼칩니다. 확장된 서버에 연결 대화 상자에서 연결 속성 탭을 선택합니다. 데이터베이스에 연결 필드에서 SSISDB를 선택하거나 입력합니다.

  4. 그런 다음 연결을 선택합니다. SSMS에서 개체 탐색기 창이 열립니다.

  5. 개체 탐색기 Integration Services 카탈로그를 확장한 다음 SSISDB를 확장하여 SSIS 카탈로그 데이터베이스의 개체를 봅니다.

배포 마법사를 사용하여 프로젝트 배포

패키지 배포 및 배포 마법사에 대한 자세한 내용은 Integration Services(SSIS) 프로젝트 및 패키지 배포Integration Services 배포 마법사를 참조하세요.

참고 항목

Azure로의 배포는 프로젝트 배포 모델만 지원합니다.

Integration Services 배포 마법사 시작

  1. Integration Services 카탈로그 노드와 SSISDB 노드가 펼쳐진 SSMS의 [개체 탐색기]에서 프로젝트 폴더를 펼칩니다.

  2. 프로젝트 노드를 선택합니다.

  3. 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 프로젝트 배포를 선택합니다. Integration Services 배포 마법사가 열립니다. SSIS 카탈로그 데이터베이스 또는 파일 시스템의 프로젝트를 배포할 수 있습니다.

    SSMS의 프로젝트 배포

    SSIS 배포 마법사 대화 상자 열림

배포 마법사를 사용하여 프로젝트 배포

  1. 배포 마법사의 소개 페이지에서 소개를 검토합니다. 다음을 선택하여 원본 선택 페이지를 엽니다.

  2. 원본 선택 페이지에서 배포할 기존 SSIS 프로젝트를 선택합니다.

    • 만든 프로젝트 배포 파일을 배포하려면 프로젝트 배포 파일 을 선택하고 .ispac 파일에 대한 경로를 입력합니다.
    • SSIS 카탈로그에 상주하는 프로젝트를 배포하려면 Integration Services 카탈로그를 선택한 다음 카탈로그에 서버 이름과 프로젝트 경로를 입력합니다. SQL Server에서 호스트하는 SSISDB에 있는 프로젝트만 이 단계에서 다시 배포할 수 있습니다.
    • 다음을 선택해서 대상 선택 페이지를 봅니다.
  3. 대상 선택 페이지에서 프로젝트의 대상을 선택합니다.

    • <server_name>.database.windows.net 형식의 정규화된 서버 이름을 입력합니다.
    • 인증 정보를 제공한 다음, 연결을 선택합니다.
    • 그런 다음 찾아보기를 선택하여 SSISDB에서 대상 폴더를 선택합니다.
    • 그런 다음, 다음을 선택하여 검토 페이지를 엽니다. (연결을 선택하면 다음 단추가 활성화됩니다.)
  4. 검토 페이지에서 선택한 설정을 검토합니다.

    • 이전을 선택하거나 왼쪽 창의 단계를 선택하여 선택을 변경할 수 있습니다.
    • 배포를 선택하여 배포 프로세스를 시작합니다.

    참고 항목

    활성 작업자 에이전트가 없습니다. (.NET SqlClient Data Provider) 오류 메시지가 나타나면 Azure-SSIS Integration Runtime이 실행 중인지 확인합니다. Azure-SSIS IR이 중지된 상태에서 배포하려고 시도하면 이 오류가 발생합니다.

  5. 배포 프로세스가 완료된 후 결과 페이지가 열립니다. 이 페이지에서는 각 작업의 성공 또는 실패를 표시합니다.

    • 작업이 실패하면 결과 열에서 실패를 선택하여 해당 오류에 대한 설명을 표시합니다.
    • 필요에 따라 보고서 저장...을 선택하여 XML 파일에 결과를 저장합니다.
    • 닫기를 선택하여 마법사를 종료합니다.

PowerShell을 사용하여 프로젝트 배포

PowerShell을 사용하여 Azure SQL Database의 SSISDB에 프로젝트를 배포하려면 다음 스크립트를 요구 사항에 맞게 조정합니다. 스크립트는 $ProjectFilePath의 하위 폴더와 각 자식 폴더의 프로젝트를 열거한 다음 SSISDB에서 동일한 폴더를 만들고 해당 폴더에 프로젝트를 배포합니다.

이 스크립트를 사용하려면 스크립트를 실행하는 컴퓨터에 SQL Server Data Tools 버전 17.x 또는 SQL Server Management Studio가 설치되어 있어야 합니다.

# Variables
$ProjectFilePath = "C:\<folder>"
$SSISDBServerEndpoint = "<servername>.database.windows.net"
$SSISDBServerAdminUserName = "<username>"
$SSISDBServerAdminPassword = "<password>"

# Load the IntegrationServices Assembly
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Management.IntegrationServices") | Out-Null;

# Store the IntegrationServices Assembly namespace to avoid typing it every time
$ISNamespace = "Microsoft.SqlServer.Management.IntegrationServices"

Write-Host "Connecting to server ..."

# Create a connection to the server
$sqlConnectionString = "Data Source=" + $SSISDBServerEndpoint + ";User ID="+ $SSISDBServerAdminUserName +";Password="+ $SSISDBServerAdminPassword + ";Initial Catalog=SSISDB"
$sqlConnection = New-Object System.Data.SqlClient.SqlConnection $sqlConnectionString

# Create the Integration Services object
$integrationServices = New-Object $ISNamespace".IntegrationServices" $sqlConnection

# Get the catalog
$catalog = $integrationServices.Catalogs['SSISDB']

write-host "Enumerating all folders..."

$folders = ls -Path $ProjectFilePath -Directory

if ($folders.Count -gt 0)
{
    foreach ($filefolder in $folders)
    {
        Write-Host "Creating Folder " + $filefolder.Name + " ..."

        # Create a new folder
        $folder = New-Object $ISNamespace".CatalogFolder" ($catalog, $filefolder.Name, "Folder description")
        $folder.Create()

        $projects = ls -Path $filefolder.FullName -File -Filter *.ispac
        if ($projects.Count -gt 0)
        {
            foreach($projectfile in $projects)
            {
                $projectfilename = $projectfile.Name.Replace(".ispac", "")
                Write-Host "Deploying " + $projectfilename + " project ..."

                # Read the project file, and deploy it to the folder
                [byte[]] $projectFileContent = [System.IO.File]::ReadAllBytes($projectfile.FullName)
                $folder.DeployProject($projectfilename, $projectFileContent)
            }
        }
    }
}

Write-Host "All done." 

패키지 실행

  1. SSMS의 개체 탐색기에서 실행하려는 패키지를 선택합니다.

  2. 마우스 오른쪽 단추를 클릭하고 실행을 선택하여 패키지 실행 대화 상자를 엽니다.

  3. 패키지 실행대화 상자에서 매개 변수, 연결 관리자고급 탭의 설정을 사용하여 패키지 실행을 구성합니다.

  4. 확인을 선택하여 패키지를 실행합니다.

SSMS에서 실행 중인 패키지 모니터링

Integration Services 서버에서 현재 실행 중인 Integration Services 작업(예: 배포, 유효성 검사 및 패키지 실행)의 상태를 보려면, SSMS에서 활성 작업 대화 상자를 사용합니다. 활성 작업 대화 상자를 열려면 SSISDB를 마우스 오른쪽 단추로 클릭한 다음 활성 작업을 선택합니다.

개체 탐색기 패키지를 선택하고 마우스 오른쪽 단추를 클릭하고 보고서, 표준 보고서, 모든 실행을 차례로 선택할 수도 있습니다.

SSMS에서 실행 중인 패키지를 모니터링하는 방법에 대한 자세한 내용은 실행 중인 패키지 및 기타 작업 모니터링을 참조 하세요.

SSIS 패키지 실행 작업 모니터링

SSIS 패키지 실행 작업을 사용하여 Azure Data Factory 파이프라인의 일부로 패키지를 실행하는 경우 Data Factory UI에서 파이프라인 실행을 모니터링할 수 있습니다. 그런 다음 활동 실행의 출력에서 SSISDB 실행 ID를 가져올 수 있고 더 포괄적인 실행 로그 및 SSMS에서 오류 메시지를 확인하는 ID를 사용할 수 있습니다.

Data Factory에 패키지 실행 ID 가져오기

Azure-SSIS Integration Runtime 모니터링

패키지가 실행하고 있는 Azure-SSIS Integration Runtime에 대한 상태 정보를 얻으려면 다음 PowerShell 명령을 사용합니다. 각 명령에서 Data Factory, Azure SSIS IR 및 리소스 그룹의 이름을 제공합니다.

자세한 내용은 Azure-SSIS Integration Runtime 모니터를 참조하세요.

Azure-SSIS Integration Runtime에 대한 메타데이터 가져오기

Get-AzDataFactoryV2IntegrationRuntime -DataFactoryName $DataFactoryName -Name $AzureSsisIRName -ResourceGroupName $ResourceGroupName

Azure-SSIS Integration Runtime에 대한 상태 가져오기

Get-AzDataFactoryV2IntegrationRuntime -Status -DataFactoryName $DataFactoryName -Name $AzureSsisIRName -ResourceGroupName $ResourceGroupName

다음 단계