Dela via


Distribuera ett SSIS-projekt med PowerShell

gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory

Den här snabbstarten visar hur du använder ett PowerShell-skript för att ansluta till en databasserver och distribuera ett SSIS-projekt till SSIS-katalogen.

Förutsättningar

En Azure SQL Database-server lyssnar på port 1433. Om du försöker ansluta till en Azure SQL Database-server inifrån en företagsbrandvägg måste den här porten vara öppen i företagsbrandväggen för att du ska kunna ansluta.

Plattformar som stöds

Du kan använda informationen i den här snabbstarten för att distribuera ett SSIS-projekt till följande plattformar:

Du kan inte använda informationen i den här snabbstarten för att distribuera ett SSIS-paket till SQL Server i Linux. Mer information om hur du kör paket på Linux finns i Extrahera, transformera och läsa in data i Linux med SSIS.

För Azure SQL Database hämtar du anslutningsinformationen

Om du vill distribuera projektet till Azure SQL Database hämtar du den anslutningsinformation du behöver för att ansluta till SSIS-katalogdatabasen (SSISDB). Du behöver det fullständigt kvalificerade servernamnet och inloggningsinformationen i de procedurer som följer.

  1. Logga in på Azure-portalen.
  2. Välj SQL-databaser på den vänstra menyn och välj sedan SSISDB-databasen på sidan SQL-databaser .
  3. På sidan Översikt för databasen granskar du det fullständigt kvalificerade servernamnet. Hovra över servernamnet om du vill se alternativet Klicka för att kopiera .
  4. Om du glömmer inloggningsinformationen för Azure SQL Database-servern går du till SQL Database-serversidan för att visa serveradministratörsnamnet. Du kan återställa lösenordet om det behövs.
  5. Välj Visa databasanslutningssträngar.
  6. Granska den fullständiga ADO.NET anslutningssträngen.

Autentiseringsmetod som stöds

Se autentiseringsmetoder för distribution.

SSIS PowerShell-provider

Ange lämpliga värden för variablerna överst i följande skript och kör sedan skriptet för att distribuera SSIS-projektet.

Anmärkning

I följande exempel används Windows-autentisering för att distribuera till en SQL Server lokalt. Använd cmdleten New-PSDive för att upprätta en anslutning med SQL Server-autentisering. Om du ansluter till en Azure SQL Database-server kan du inte använda Windows-autentisering.

# 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-skript

Ange lämpliga värden för variablerna överst i följande skript och kör sedan skriptet för att distribuera SSIS-projektet.

Anmärkning

Följande skript kräver sammansättningen Microsoft.Data.SqlClient . Installera det från NuGet-paketet och se till att DLL:n är tillgänglig för PowerShell. Du kan ladda den med Add-Type -Path "path\to\Microsoft.Data.SqlClient.dll" innan du kör skriptet.

I följande exempel används Windows-autentisering för att distribuera till en SQL Server lokalt. Om du vill använda SQL Server-autentisering ersätter du Integrated Security=SSPI; argumentet med User ID=<user name>;Password=<password>;. Om du ansluter till en Azure SQL Database-server kan du inte använda Windows-autentisering.

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