Compartilhar via


Executar um pacote do SSIS com o PowerShell

Aplica-se a:SQL Server SSIS Integration Runtime no Azure Data Factory

Este guia de início rápido demonstra como usar um script do PowerShell para se conectar a um servidor de banco de dados e executar um pacote do SSIS.

Pré-requisitos

Um servidor do Banco de Dados SQL do Azure escuta na porta 1433. Se estiver tentando se conectar a um servidor de Banco de Dados SQL do Azure em um firewall corporativo, essa porta deverá estar aberta no firewall corporativo para que você se conecte com êxito.

Plataformas com suporte

Você pode usar as informações neste guia de início rápido para executar um pacote do SSIS nas seguintes plataformas:

Você não pode usar as informações neste início rápido para executar um pacote SSIS no Linux. Para obter mais informações sobre como executar pacotes no Linux, veja Extrair, transformar e carregar dados no Linux com o SSIS.

Para o Banco de Dados SQL do Azure, obtenha as informações de conexão

Para executar o pacote no Banco de Dados SQL do Azure, obtenha as informações de conexão necessárias para se conectar ao SSISDB (banco de dados de catálogo do SSIS). Você precisa do nome totalmente qualificado do servidor e das informações de logon nos procedimentos a seguir.

  1. Entre no portal do Azure.
  2. Selecione Bancos de Dados SQL no menu à esquerda e selecione o banco de dados do SSISDB na página Bancos de dados SQL.
  3. Na página Visão geral do seu banco de dados, reveja o nome completo do servidor. Para ver a opção Clique para copiar, passe o mouse sobre o nome do servidor.
  4. Se você esquecer suas informações de logon do servidor de Banco de Dados SQL do Azure, navegue até a página do servidor de Banco de Dados SQL para exibir o nome do administrador de servidor. Você pode redefinir a senha, se necessário.
  5. Selecione Mostrar cadeias de conexão de banco de dados.
  6. Examine a cadeia de conexão ADO.NET completa.

Provedor do PowerShell do SSIS

Você pode usar o Provedor do PowerShell do SSIS para se conectar a um catálogo do SSIS e executar pacotes dentro dele.

O exemplo a seguir mostra como executar um pacote SSIS em um catálogo de pacotes com o Provedor do PowerShell do SSIS.

(Get-ChildItem SQLSERVER:\SSIS\localhost\Default\Catalogs\SSISDB\Folders\Project1Folder\Projects\'Integration Services Project1'\Packages\ |
WHERE { $_.Name -eq 'Package.dtsx' }).Execute($false, $null)

Script do PowerShell

Forneça os valores adequados para as variáveis na parte superior do script a seguir e, em seguida, execute o script para executar o pacote do SSIS.

Observação

O exemplo a seguir usa a Autenticação do Windows. Para usar a autenticação do SQL Server, substitua o argumento Integrated Security=SSPI; com User ID=<user name>;Password=<password>;. Se você estiver se conectando a um servidor de Banco de Dados SQL do Azure, não poderá usar a autenticação do Windows.

# Variables
$SSISNamespace = "Microsoft.SqlServer.Management.IntegrationServices"
$TargetServerName = "localhost"
$TargetFolderName = "Project1Folder"
$ProjectName = "Integration Services Project1"
$PackageName = "Package.dtsx"

# 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"]

# Get the folder
$folder = $catalog.Folders[$TargetFolderName]

# Get the project
$project = $folder.Projects[$ProjectName]

# Get the package
$package = $project.Packages[$PackageName]

Write-Host "Running " $PackageName "..."

$result = $package.Execute($false, $null)

Write-Host "Done."