Azure Data Factory で SSIS を実行する

by Matsumoto | February 20, 2025

今回は、Azure Data Factory のAzure-SSIS Integration Runtime という機能を使って、 Azure 上でSSIS プロジェクトを実行する方法について解説します。


CData SSIS Components を使ったSSIS プロジェクトを、Azure Data Factory にデプロイすることで、Azure クラウド上でSSIS を使った ETL/EAI の仕組みを構築することができます。

1.必要なもの

・Azure アカウント
・Microsoft Visual Studio 2022
・Microsoft SQL Server Management Studio (以下 SSMS )
・Power Shell 6 以降
・Azure Powershell
・CData SSIS Components
・CData SSIS Components 用RTK

2.今回のシナリオ

今回は、SSIS Components for Excel と、SSIS Components for Kintone の2 つのSSIS Components を使い、SharePoint のドキュメントフォルダーにあるExcel ファイルからデータを読み込み、kintone アプリのレコードへUpsert を行います。

3.初期設定

初めに、SSIS プロジェクトを作成するために必要な設定を行います。

1) Visual Studio 2022 のインストール

Visual Studio 2022 IDE - ソフトウェア開発者向けプログラミング ツール

2) 拡張機能のインストール

Visual Studio の「拡張機能(X)」メニューから「拡張機能の管理(M)...」で、拡張機能マネージャーを開きます。

「Microsoft Integration Services Projects」を検索し、「インストール」をクリックします。

3) CData SSIS Components のインストール

使用するSSIS Components をインストールします。

Azure Data Factory で実行する場合は、ターゲットとするSQL Server のバージョンで、Azure Data Factory と、SQL Server 2017 が選択されていることを確認します。

Azure Data Factory でSSIS Components を使用する場合は、RTK が必要になります。

RTK の発行は、弊社サポート へお問い合わせください。

4) PowerShell 6 以降のインストール

Azure PowerShell を使うために、PowerShell のバージョンを確認し、もしバージョンが6 以前だった場合は、6 以降をインストールします。

Windows への PowerShell のインストール - PowerShell | Microsoft Learn

PowerShell のバージョンは、PowerShell で「$PSVersionTable」を実行すると確認できます。

5) Azure PowerShell のインストール

Azure PowerShell をインストールします。

Install Azure PowerShell on Windows | Microsoft Learn

6) Microsoft SQL Server Management Studio のインストール

SQL Server Management Studio (SSMS) のダウンロード - SQL Server Management Studio (SSMS) | Microsoft Learn

4.Azure の設定

1) Azure への接続

Azure PowerShell で、Azure へ接続します

Connect-AzAccount

Connect-AzAccount (Az.Accounts) | Microsoft Learn

2) リソースグループの作成

リソースグループを作成します。

New-AzResourceGroup -Name SSISDemoResourceGroup -Location EastUS

New-AzResourceGroup (Az.Resources) | Microsoft Learn

3) SQL Server の作成

New-AzSqlServer -ResourceGroupName "SSISDemoResourceGroup" -ServerName "ssisdemosqlserver" -Location "EastUS" -SqlAdministratorCredentials (Get-Credential) -PublicNetworkAccess "Enabled"

New-AzSqlServer (Az.Sql) | Microsoft Learn

4) SQL Server のネットワーク設定

ネットワークのファイアウォール規則に、Visual Studio がインストールされているPC から接続する際のIP アドレスを追加して接続を許可します。

New-AzSqlServerFirewallRule -ResourceGroupName "SSISDemoResourceGroup" -ServerName "ssisdemosqlserver" -FirewallRuleName "Rule01" -StartIpAddress "xxx.xxx.xxx.xxx" -EndIpAddress "xxx.xxx.xxx.xxx"

New-AzSqlServerFirewallRule -ResourceGroupName "SSISDemoResourceGroup" -ServerName "ssisdemosqlserver" -FirewallRuleName "AllowAllWindowsAzureIps" -StartIpAddress "0.0.0.0" -EndIpAddress "0.0.0.0"

New-AzSqlServerFirewallRule (Az.Sql) | Microsoft Learn

5) ストレージ アカウントの作成

SSIS Components をアップロードするストレージアカウントを作成します。

New-AzStorageAccount -ResourceGroupName "SSISDemoResourceGroup" -Name "ssisdemostorage" -Location EastUS -SkuName Standard_LRS -Kind StorageV2

New-AzStorageAccount (Az.Storage) | Microsoft Learn

6) ストレージ アカウントのネットワーク設定

Public アクセスを許可します。

Set-AzStorageAccount -ResourceGroupName "SSISDemoResourceGroup" -Name "ssisdemostorage"  -PublicNetworkAccess "Enabled" -AllowBlobPublicAccess $true

Set-AzStorageAccount (Az.Storage) | Microsoft Learn

5.SSIS Components のデプロイ

使用したいSSIS Components が複数ある場合は、それぞれのlib フォルダーにあるdll フ ァイルを一つのlib フォルダーにコピーしてまとめます。

lib フォルダーのAzureDeploy.ps1 を実行し、lib フォルダーのファイルをストレージ アカウントにアップロードします。

.\AzureDeploy.ps1 -ResourceGroupName "SSISDemoResourceGroup" -SubscriptionId "xxxxx" -SqlServerName "ssisdemosqlserver.database.windows.net" -SqlDatabaseUser "xxxxx" -SqlDatabasePwd "xxxxx" -DataFactoryName "SSISDemoFactory" -StorageAccountName "ssisdemostorage"

これで、Azure Data Factory でSSIS を実行するための準備が完了しました。

次は、実行したい SSIS のプロジェクトを作成します。

6.SSIS プロジェクトの作成

Azure Data Factory で実行する場合も、SSIS プロジェクトの作成手順はローカルで実行する場合とほぼ変わりません。

プロジェクトの設定で異なる点は、プロジェクトのプロパティにある「Azure 対応の設定」の「Azure-Enabled Project 」がTrue になっている点です。

1) プロジェクトの作成

プロジェクト テンプレートから「Integration Services Project(Azure-Enabled) 」を選択し、新しいプロジェクトを作成します。

2) フローの作成

通常のSSIS プロジェクトと同様に、フローを作成します。

今回作成するフローでは、SharePoint のドキュメントフォルダーに格納されているExcel ファイルから、シートにあるデータを読み込み、kintone アプリのレコードにUpsert を行うため、接続マネージャーでExcel とkintone への接続を作成します。

3) Excel への接続設定

Excel ファイルはSharePoint 上にあるため、下記のように設定します。

Azure Data Factory でSSIS プロジェクトを実行する場合、接続時のOAuth 認証でブラウザを表示することができないため、今回はヘッドレスマシンの方法で、予めOAuth 認証を行い、アクセストークンとリフレッシュトークンを接続文字列に指定しました。

CData SSIS Components for Microsoft Excel - SharePoint Online への接続

Connection Type = SharePoint REST
URI =sprest://remotePath/file.xlsx
Storage Base URL = xxxxx
Initiate OAuth = REFRESH
OAuth Access Token = xxxxx
OAuth Refresh Token = xxxxx
RTK = xxxxx

CData SSIS Components for Microsoft Excel - SharePoint Online への接続

4) kintone への接続設定

kintone への接続は、下記のように設定します。

URL = https://<サブドメイン>.cybozu.com/
User = xxxxx
Password = xxxxx
RTK = xxxxx

また、今回はサブテーブルへはアクセスしないため、「Check For Subtables In=None」を指定しています。
CData SSIS Components for Kintone - CheckForSubtablesIn

5) データ フローの作成

制御フローにデータフロー タスク を追加し、下記のようにExcel Source から Kintone Destination へデータを渡すフローを追加します。

CData Excel Source で、対象となるExcel シートのテーブルを選択します。

Excel シートのカラムとkintone アプリのカラムでは、カラム長が異なるため、派生列で長さを調整しています。

CData Kintone Destination で、出力先のkintone アプリを選択し、Mappings で、Excel のカラムをどのカラムに紐づけるかを設定します。

7.Azure へのデプロイ

1) Azure への接続

Visual Studio がログインしていることを確認します。

プロジェクトを右クリックし、「Azure の SSIS」から「Azure で SSIS に接続(O)」をクリックします。

右上にある「Sign In」をクリックします。

Azure Subscription 、Azure Service 、Data Factory 、Integration Runtime 、Azure Storage を選択し、「Connect 」をクリックします。

2) プロジェクトのデプロイ

プロジェクトを右クリックし、「展開(Y) 」をクリックします。

「配置ターゲットを選択する」で、「Azure Data Factory での SSIS 」を選択し、「Next >」をクリックします。

配置先のSQL Server のサーバー名とログイン、パスワードを入力し、「接続」をクリックします。
接続されると、「パス」が有効になるので、「参照(B)... 」をクリックして、プロジェクトを配置するフォルダーを指定します。

設定内容を確認し「配置(D) 」をクリックします。

8.プロジェクトの実行

SSMS から作成したSQL Server へ接続し、デプロイした SSIS プロジェクトを右クリックして、「実行(X)... 」をクリックします。

「OK 」をクリックします。

実行 レポートを確認します。

9.まとめ

Azure Data Factory でデータ連携を行う際は、SSIS Componets を活用してみてください。