使用 PowerShell 執行 SSIS 套件
適用於:SQL Server Azure Data Factory 中的 SSIS Integration Runtime
本快速入門示範如何使用 PowerShell 指令碼,來連線至資料庫伺服器並執行 SSIS 套件。
先決條件
Azure SQL Database 伺服器會接聽連接埠 1433。 如果您要嘗試透過公司防火牆連線至 Azure SQL Database 伺服器,則必須在公司防火牆中開啟此連接埠,讓您成功連線。
支援的平台
您可以使用本快速入門中的資訊,在下列平台上執行 SSIS 套件:
Windows 上的 SQL Server。
Azure Data Factory (ADF) 中的 SSIS 整合執行階段 (IR),其中 SSIS 目錄 (SSISDB) 是由 Azure SQL 受控執行個體 (MI) 主控。 如需在 Azure 中部署和執行套件的詳細資訊,請參閱將 SQL Server Integration Services 工作負載隨即轉移至雲端。
您不能使用本快速入門中的資訊在 Linux 上執行 SSIS 套件。 如需在 Linux 上執行套件的詳細資訊,請參閱使用 SSIS 在 Linux 上擷取、轉換和載入資料。
針對 Azure SQL Database,請取得連線資訊
若要在 Azure SQL Database 上執行套件,請取得連線至 SSIS 目錄資料庫 (SSISDB) 所需的連線資訊。 在下列程序中,您需要完整伺服器名稱和登入資訊。
- 登入 Azure 入口網站。
- 從左側功能表中選取 [SQL 資料庫],然後選取 [SQL 資料庫] 頁面上的 SSISDB 資料庫。
- 在您資料庫的 [概觀] 頁面上,檢閱完整伺服器名稱。 若要顯示 [按一下以複製] 選項,請將滑鼠指標暫留在伺服器名稱上。
- 如果您忘記 Azure SQL Database 伺服器登入資訊,請巡覽至 [SQL Database 伺服器] 頁面來檢視伺服器管理員名稱。 如有需要,您可以重設密碼。
- 按一下 [顯示資料庫連接字串]。
- 檢閱完整 ADO.NET 連接字串。
SSIS PowerShell 提供者
您可以使用 SSIS PowerShell 提供者來連線至 SSIS 目錄並在其內執行套件。
以下是如何使用 SSIS PowerShell 提供者在套件目錄中執行 SSIS 套件的基本範例。
(Get-ChildItem SQLSERVER:\SSIS\localhost\Default\Catalogs\SSISDB\Folders\Project1Folder\Projects\'Integration Services Project1'\Packages\ |
WHERE { $_.Name -eq 'Package.dtsx' }).Execute("false", $null)
PowerShell 指令碼
為下列指令碼上方的變數提供適當的值,然後執行指令碼以執行 SSIS 套件。
注意
下列範例使用 Windows 驗證。 若要使用 SQL Server 驗證,請使用 User ID=<user name>;Password=<password>;
取代 Integrated Security=SSPI;
引數。 如果要連線至 Azure SQL Database 伺服器,您無法使用 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."