다음을 통해 공유


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

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

이 빠른 시작 자습서에서는 PowerShell 스크립트를 사용하여 데이터베이스 서버에 연결하고 SSIS 프로젝트를 SSIS 카탈로그에 배포하는 방법을 보여 줍니다.

필수 조건

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

지원되는 플랫폼

이 빠른 시작의 정보를 사용하여 다음과 같은 플랫폼에서 SSIS 프로젝트를 배포할 수 있습니다.

이 빠른 시작의 정보를 사용하여 SQL Server on Linux에 SSIS 패키지를 배포할 수 없습니다. 자세한 내용은 Linux에서 SSIS를 사용하여 데이터 추출, 변환 및 로드를 참조하세요.

Azure SQL Database의 경우 연결 정보를 가져옵니다.

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

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

지원되는 인증 방법

배포에 대한 인증 방법을 참조하세요.

SSIS PowerShell 공급자

다음 스크립트의 맨 위에 있는 변수에 적절한 값을 제공한 다음 스크립트를 실행하여 SSIS 프로젝트를 배포합니다.

참고 항목

다음 예제에서는 Windows 인증을 사용하여 온-프레미스의 SQL Server에 배포합니다. New-PSDive cmdlet을 사용하여 SQL Server 인증을 사용하여 연결을 설정합니다. Azure SQL Database 서버에 연결하는 경우 Windows 인증을 사용할 수 없습니다.

# Variables
$TargetInstanceName = "localhost\default"
$TargetFolderName = "Project1Folder"
$ProjectFilePath = "C:\Projects\Integration Services Project1\Integration Services Project1\bin\Development\Integration Services Project1.ispac"
$ProjectName = "Integration Services Project1"

# Get the Integration Services catalog
$catalog = Get-Item SQLSERVER:\SSIS\$TargetInstanceName\Catalogs\SSISDB\

# Create the target folder
New-Object "Microsoft.SqlServer.Management.IntegrationServices.CatalogFolder" ($catalog, 
$TargetFolderName,"Folder description") -OutVariable folder
$folder.Create()

# Read the project file and deploy it
[byte[]] $projectFile = [System.IO.File]::ReadAllBytes($ProjectFilePath)
$folder.DeployProject($ProjectName, $projectFile)

# Verify packages were deployed.
dir "$($catalog.PSPath)\Folders\$TargetFolderName\Projects\$ProjectName\Packages" | 
SELECT Name, DisplayName, PackageId

PowerShell 스크립트

다음 스크립트의 맨 위에 있는 변수에 적절한 값을 제공한 다음 스크립트를 실행하여 SSIS 프로젝트를 배포합니다.

참고 항목

다음 예제에서는 Windows 인증을 사용하여 온-프레미스의 SQL Server에 배포합니다. SQL Server 인증을 사용하려면 인수 Integrated Security=SSPI;User ID=<user name>;Password=<password>;로 대체합니다. Azure SQL Database 서버에 연결하는 경우 Windows 인증을 사용할 수 없습니다.

# Variables
$SSISNamespace = "Microsoft.SqlServer.Management.IntegrationServices"
$TargetServerName = "localhost"
$TargetFolderName = "Project1Folder"
$ProjectFilePath = "C:\Projects\Integration Services Project1\Integration Services Project1\bin\Development\Integration Services Project1.ispac"
$ProjectName = "Integration Services Project1"

# Load the IntegrationServices assembly
$loadStatus = [System.Reflection.Assembly]::Load("Microsoft.SQLServer.Management.IntegrationServices, "+
    "Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL")

# Create a connection to the server
$sqlConnectionString = `
    "Data Source=" + $TargetServerName + ";Initial Catalog=master;Integrated Security=SSPI;"
$sqlConnection = New-Object System.Data.SqlClient.SqlConnection $sqlConnectionString

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

# Get the Integration Services catalog
$catalog = $integrationServices.Catalogs["SSISDB"]

# Create the target folder
$folder = New-Object $SSISNamespace".CatalogFolder" ($catalog, $TargetFolderName,
    "Folder description")
$folder.Create()

Write-Host "Deploying " $ProjectName " project ..."

# Read the project file and deploy it
[byte[]] $projectFile = [System.IO.File]::ReadAllBytes($ProjectFilePath)
$folder.DeployProject($ProjectName, $projectFile)

Write-Host "Done."

다음 단계