Een SSIS-project implementeren met PowerShell

van toepassing op:SQL Server SSIS Integration Runtime in Azure Data Factory

In deze quickstart ziet u hoe u een PowerShell-script gebruikt om verbinding te maken met een databaseserver en een SSIS-project te implementeren in de SSIS-catalogus.

Vereiste voorwaarden

Een Azure SQL Database-server luistert op poort 1433. Als u verbinding probeert te maken met een Azure SQL Database-server vanuit een bedrijfsfirewall, moet deze poort zijn geopend in de firewall van het bedrijf om verbinding te kunnen maken.

Ondersteunde platforms

U kunt de informatie in deze quickstart gebruiken om een SSIS-project te implementeren op de volgende platforms:

U kunt de informatie in deze quickstart niet gebruiken om een SSIS-pakket te implementeren in SQL Server op Linux. Zie Gegevens extraheren, transformeren en laden in Linux met SSIS voor meer informatie over het uitvoeren van pakketten op Linux.

Voor Azure SQL Database haalt u de verbindingsgegevens op

Als u het project wilt implementeren in Azure SQL Database, haalt u de verbindingsgegevens op die u nodig hebt om verbinding te maken met de SSIS Catalog-database (SSISDB). U hebt de volledig gekwalificeerde servernaam en aanmeldingsgegevens nodig in de procedures die volgen.

  1. Meld u aan bij het Azure-portaal.
  2. Selecteer SQL-databases in het linkermenu en selecteer vervolgens de SSISDB-database op de pagina SQL-databases .
  3. Controleer op de pagina Overzicht voor uw database de volledig gekwalificeerde servernaam. Als u de optie Klik om te kopiƫren wilt zien, beweegt u de muisaanwijzer boven de servernaam.
  4. Als u de aanmeldingsgegevens van uw Azure SQL Database-server bent vergeten, gaat u naar de pagina SQL Database-server om de naam van de serverbeheerder weer te geven. U kunt het wachtwoord indien nodig opnieuw instellen.
  5. Selecteer Databaseverbindingsreeksen weergeven.
  6. Controleer de volledige ADO.NET verbindingsreeks.

Ondersteunde verificatiemethode

Raadpleeg verificatiemethoden voor implementatie.

PowerShell-script

Geef de juiste waarden op voor de variabelen boven aan het volgende script en voer vervolgens het script uit om het SSIS-project te implementeren.

Opmerking

In het volgende voorbeeld wordt Windows-verificatie gebruikt om te implementeren in een on-premises SQL Server. Als u SQL Server-verificatie wilt gebruiken, vervangt u het Integrated Security=SSPI; argument door User ID=<user name>;Password=<password>;. Als u verbinding maakt met een Azure SQL Database-server, kunt u geen Windows-verificatie gebruiken.

# ===== Param =====
$TargetSqlVersion  = '2025'   # 2017 / 2019 / 2022 / 2025
$TargetServerName  = 'localhost'
$TargetFolderName  = 'Project1Folder'
$ProjectName       = 'Integration Services Project1'
$ProjectFilePath   = 'C:\Projects\Integration Services Project1\Integration Services Project1\bin\Development\Integration Services Project1.ispac'
# ========================

$SSISNamespace  = 'Microsoft.SqlServer.Management.IntegrationServices'
$isV2025OrLater = [int]$TargetSqlVersion -ge 2025

if ($isV2025OrLater) {
    # 2025+ : need Microsoft.Data.SqlClient (shipped with SqlServer module 22.x)
    $required = '22.4.5.1'
    if (-not (Get-Module -ListAvailable -Name SqlServer |
              Where-Object { $_.Version -eq [version]$required })) {
        Install-Module -Name SqlServer -RequiredVersion $required -Scope CurrentUser -AllowClobber -Force
    }
    Import-Module SqlServer -RequiredVersion $required
    $sqlClientType = 'Microsoft.Data.SqlClient.SqlConnection'
}
else {
    # 2017 / 2019 / 2022 : in-box System.Data.SqlClient
    $sqlClientType = 'System.Data.SqlClient.SqlConnection'
}

[Reflection.Assembly]::LoadWithPartialName($SSISNamespace) | Out-Null
[Reflection.Assembly]::LoadWithPartialName(($SSISNamespace + 'Enum')) | Out-Null

$sqlConnectionString = "Data Source=$TargetServerName;Initial Catalog=master;Integrated Security=SSPI;Encrypt=True;TrustServerCertificate=True; 
$sqlConnection       = New-Object $sqlClientType $sqlConnectionString

$integrationServices = New-Object ($SSISNamespace + '.IntegrationServices') $sqlConnection
$catalog             = $integrationServices.Catalogs['SSISDB']

$folder = New-Object ($SSISNamespace + '.CatalogFolder') ($catalog, $TargetFolderName, 'Folder description')
$folder.Create()

Write-Host "Deploying $ProjectName ..."
[byte[]]$projectFile = [System.IO.File]::ReadAllBytes($ProjectFilePath)
$folder.DeployProject($ProjectName, $projectFile)
Write-Host 'Done.'