使用 PowerShell 部署 SSIS 项目

适用于: SQL Server Azure 数据工厂中的 SSIS Integration Runtime

本快速入门演示了如何使用 PowerShell 脚本连接到数据库服务器,并将 SSIS 项目部署到 SSIS 目录。

先决条件

Azure SQL 数据库服务器在端口 1433 上进行侦听。 如果尝试从企业防火墙内连接到 Azure SQL 数据库服务器,必须在企业防火墙中打开该端口,才能成功连接。

受支持的平台

可使用此快速入门中的信息将 SSIS 项目部署到以下平台:

无法使用此快速入门中的信息将 SSIS 包部署到 Linux 上的 SQL Server。 有关在 Linux 上运行包的详细信息,请参阅使用 SSIS 在 Linux 上提取、转换和加载数据

对于 Azure SQL 数据库,请获取连接信息

要将项目部署到 Azure SQL 数据库,则获取所需的信息以连接到 SSIS 目录数据库 (SSISDB)。 在接下来的步骤中需要完全限定的服务器名称和登录信息。

  1. 登录 Azure 门户
  2. 从左侧的菜单选择“SQL 数据库”,然后选择“SQL 数据库”页中的 SSISDB 数据库
  3. 在数据库的“概述” 页上,查看完全限定的服务器名称。 若想查看“单击以复制”选项,将鼠标悬停在服务器名称上 。
  4. 如果忘记了 Azure SQL 数据库服务器登录信息,导航到 SQL 数据库服务器页以查看服务器管理员名称。 如有必要,可重置密码。
  5. 单击“显示数据库连接字符串”
  6. 查看完整的 ADO.NET 连接字符串。

支持的身份验证方法

请参阅用于部署的身份验证方法

SSIS PowerShell 提供程序

为以下脚本顶部的变量提供适当的值,然后运行脚本以部署 SSIS 项目。

注意

以下示例使用 Windows 身份验证部署到本地 SQL Server。 使用 New-PSDive cmdlet 通过 SQL Server 身份验证建立连接。 如果连接到 Azure SQL 数据库服务器,则无法使用 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 数据库服务器,则无法使用 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."

后续步骤