PowerShell を使用して SSIS パッケージを実行する
適用対象: SQL Server Azure Data Factory の SSIS 統合ランタイム
このクイックスタートでは、PowerShell スクリプトを使用してデータベース サーバーに接続し、SSIS パッケージを実行する方法を示します。
前提条件
Azure SQL Database サーバーは、ポート 1433 でリッスンします。 企業のファイアウォール内から Azure SQL Database サーバーに接続しようとする場合、正常に接続するには、このポートを企業のファイアウォールで開ける必要があります。
サポートされているプラットフォーム
このクイックスタートの情報を使用して、次のプラットフォームで SSIS パッケージを実行することができます。
SQL Server on Windows。
Azure Data Factory (ADF) の SSIS 統合ランタイム (IR)。SSIS カタログ (SSISDB) は Azure SQL Managed Instance (MI) によってホストされます。 Azure でパッケージをデプロイし、実行する方法については、「SQL Server Integration Services ワークロードをクラウドにリフト アンド シフトする」を参照してください。
Linux で SSIS パッケージを実行する場合は、このクイックスタートの情報を使用することはできません。 Linux でパッケージを実行する方法については、SSIS を使用し、Linux でデータの抽出、変換、読み込みを行う方法に関するページを参照してください。
Azure SQL Database の場合の接続情報の取得
Azure SQL Database でパッケージを実行するには、SSIS カタログ データベース (SSISDB) に接続するために必要な接続情報を取得します。 次の手順では、完全修飾サーバー名とログイン情報が必要です。
- Azure portal にサインインします。
- 左側のメニューから [SQL Databases] を選択し、[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 認証を使用するには、Integrated Security=SSPI;
引数を User ID=<user name>;Password=<password>;
に置き換えます。 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."