Compartir a través de


Ejecutar un paquete SSIS con PowerShell

Se aplica a: SQL Server SSIS Integration Runtime en Azure Data Factory

En este inicio rápido se muestra cómo usar un script de PowerShell para conectarse a un servidor de bases de datos y ejecutar un paquete SSIS.

Prerrequisitos

Un servidor de Azure SQL Database escucha en el puerto 1433. Si está intentando conectarse a un servidor de Azure SQL Database desde un firewall corporativo, este puerto debe estar abierto en el firewall corporativo para poder conectarse correctamente.

Plataformas compatibles

Puede usar la información que aparece en este inicio rápido para ejecutar un paquete de SSIS en las siguientes plataformas:

No puede usar la información que aparece en este inicio rápido para ejecutar un paquete de SSIS en Linux. Para más información sobre cómo ejecutar paquetes en Linux, vea Extract, transform, and load data on Linux with SSIS (Extraer, transformar y cargar datos en Linux con SSIS).

Para Azure SQL Database, obtener la información de conexión

Para ejecutar el paquete en Azure SQL Database, debe obtener la información de conexión necesaria para conectarse a la base de datos del catálogo de SSIS (SSISDB). Necesita el nombre completo y la información de inicio de sesión del servidor en los procedimientos siguientes.

  1. Inicie sesión en Azure Portal.
  2. Seleccione Bases de datos SQL en el menú izquierdo y, después, seleccione la base de datos SSISDB en la página Bases de datos SQL.
  3. En la página Introducción de la base de datos, compruebe el nombre completo del servidor. Mantenga el puntero del ratón sobre el nombre del servidor para ver la opción Haga clic para copiar.
  4. Si olvida la información de inicio de sesión del servidor de Azure SQL Database, navegue a la página del servidor de SQL Database para ver el nombre del administrador del servidor. Si es necesario, puede restablecer la contraseña.
  5. Haga clic en Mostrar las cadenas de conexión de la base de datos.
  6. Revise la cadena de conexión ADO.NET completa.

Proveedor PowerShell de SSIS

Puede usar el proveedor de PowerShell de SSIS para conectarse a un catálogo de SSIS y ejecutar paquetes dentro de él.

A continuación se muestra un ejemplo básico de cómo ejecutar un paquete SSIS en un catálogo de paquetes con el proveedor de PowerShell de 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 de PowerShell

Proporcione los valores adecuados para las variables en la parte superior del script siguiente y, a continuación, ejecute el script para ejecutar el paquete SSIS.

Nota:

En el ejemplo siguiente se usa la autenticación de Windows. Para usar la autenticación de SQL Server, reemplace el argumento Integrated Security=SSPI; por User ID=<user name>;Password=<password>;. Si se va a conectar a un servidor de Azure SQL Database, no puede usar la autenticación de 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."

Pasos siguientes