Partilhar via


Implementar um projeto SSIS com PowerShell

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

Este quickstart demonstra como usar um script PowerShell para se ligar a um servidor de base de dados e implementar um projeto SSIS no Catálogo SSIS.

Pré-requisitos

Um servidor de base de dados Azure SQL Database escuta na porta 1433. Se estiver a tentar ligar-se a um servidor Azure SQL Database a partir de um firewall corporativo, esta porta deve estar aberta no firewall corporativo para que se ligue com sucesso.

Plataformas suportadas

Pode usar a informação deste quickstart para implementar um projeto SSIS nas seguintes plataformas:

Não podes usar a informação deste quickstart para implementar um pacote SSIS no SQL Server no Linux. Para mais informações sobre como executar pacotes no Linux, veja Extrair, transformar e carregar dados no Linux com SSIS.

Para Azure SQL Database, obtenha a informação de ligação

Para implementar o projeto na Azure SQL Database, obtenha a informação de ligação necessária para se ligar à base de dados do Catálogo SSIS (SSISDB). Necessita do nome completo do servidor e das informações de login nos procedimentos que se seguem.

  1. Inicie sessão no portal Azure.
  2. Selecione Bases de Dados SQL no menu à esquerda e depois selecione a base de dados SSISDB na página de bases de dados SQL .
  3. Na página de Visão Geral da sua base de dados, consulte o nome do servidor totalmente qualificado. Para ver a opção Clique para copiar , passe o rato sobre o nome do servidor.
  4. Se esquecer as informações de login do servidor Azure SQL Database, aceda à página do servidor SQL Database para ver o nome do administrador do servidor. Podes repor a palavra-passe se for necessário.
  5. Selecionar Mostrar strings de ligação à base de dados.
  6. Reveja a cadeia de ligação completa de ADO.NET.

Método de autenticação suportado

Consulte os métodos de autenticação para implementação.

Fornecedor SSIS PowerShell

Forneça valores apropriados para as variáveis no topo do script seguinte e depois execute o script para implementar o projeto SSIS.

Observação

O exemplo seguinte utiliza a Autenticação do Windows para implementar num SQL Server localmente. Use o New-PSDive cmdlet para estabelecer uma ligação usando autenticação SQL Server. Se estiveres a ligar-te a um servidor Azure SQL Database, não podes usar autenticação 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

Script de PowerShell

Forneça valores apropriados para as variáveis no topo do script seguinte e depois execute o script para implementar o projeto SSIS.

Observação

O script seguinte requer a assembly Microsoft.Data.SqlClient . Instale-o a partir do pacote NuGet e certifique-se de que a DLL está acessível ao PowerShell. Podes carregá-lo Add-Type -Path "path\to\Microsoft.Data.SqlClient.dll" antes de executar o script.

O exemplo seguinte utiliza a Autenticação do Windows para implementar num SQL Server localmente. Para usar autenticação SQL Server, substitua o Integrated Security=SSPI; argumento por User ID=<user name>;Password=<password>;. Se estiveres a ligar-te a um servidor Azure SQL Database, não podes usar autenticação 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 Microsoft.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."