Azure Data Factory で SSIS を実行する

by Matsumoto | February 20, 2025

Title

今回は、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)...」で、拡張機能マネージャーを開きます。

VisualStudio Extensions

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

VisualStudio Extention Install

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

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

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

SSIS Components target SQL Server

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

Connect-AzAccoount

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

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

New-AzResourceGroup -Name SSISDemoResourceGroup -Location EastUS

New-AzResourceGroup (Az.Resources) | Microsoft Learn

New-AzResourceGroup

3) SQL Server の作成

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

New-AzSqlServer (Az.Sql) | Microsoft Learn

New-AzSqlServer

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

New-AzSqlServerFirewallRule

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

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

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

New-AzStorageAccount (Az.Storage) | Microsoft Learn

New-AzStorageAccount

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

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

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

Set-AzStorageAccount (Az.Storage) | Microsoft Learn

Set-AzStorageAccount

5.SSIS Components のデプロイ

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

SSIS lib folder

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

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

AzureDeploy.ps1

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

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

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

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

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

SSIS Project Property

1) プロジェクトの作成

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

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 への接続

SSIS Components for Excel Connection Manager

4) kintone への接続設定

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

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

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

SSIS Components for Kintone Connection Manager

5) データ フローの作成

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

SSIS Dataflow

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

CData Excel Source

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

派生列

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

CData Kintone Destination

7.Azure へのデプロイ

1) Azure への接続

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

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

AzureでSSISに接続

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

Select SSIS Integration Runtime

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

Select Azure Storage

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

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

プロジェクト 展開

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

配置ターゲットを選択する

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

配置先の選択

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

確認

8.プロジェクトの実行

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

SSIS プロジェクト 実行

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

パッケージの実行

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

SSMS 実行レポート確認

SSIS パッケージ レポート

9.まとめ

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