[Azure][SSIS]在 Azure SQL Database 上搭配 SSIS 來使用

使用 Azure 上的 Data Factory v2 ,搭配 Integration Runtime ,實現在 Azure 上使用 SSIS 的封裝

前一陣子微軟 Azure Data Factory V2 (雲端資料整合服務) 已經來到 Public Preview,其中最吸引我的就是可以將原本在 SSIS 上所設計的封裝,移植到 Azure 上使用,而不用另外再準備一台 Azure SQL VM ,就可以來使用 SSIS 了。

而 Data Factory 之所以可以運行 SSIS 的封裝,最主要是在 V2 的版本中,有提供一個 Integration Runtime (IR) 的功能,因此就可以透過他來建立 SSISDB ,並且來運行 SSIS 的封裝。

這個功能我是差不多在 10 月看到的,但自己測試半天都沒有辦法成功,後來到北京參加軟體的 Tech Summit,其中有一場也是介紹這個部分,會後我也針對這個部分詢問講師,但當時講師是說:「 SSISDB 是當你使用 SSMS 連接 Azure SQL Database ,如果有指定連接的資料庫是 SSISDB ,Azure SQL Database Server 就會自動的去建立該資料庫出來,就可以佈署 SSIS 的封裝到 Azure 上面了」。因此回到台灣之後,我在每個資料中心都進行測試,但就是沒有辦法實作出來。

就在前幾天剛好看到國外有人在討論這個部分,才發覺原來是我搞錯了,「SSISDB 是透過 PowerShell 去建立 Data Factory 內的 Integration Runtime 的時候所建立的」,所以之前才不論怎麼設定都失敗,因此重新調整方向,果然就可以順利地建立起 SSIDB ,並且讓 SSIS 的封裝去執行了。因此透過這篇文章來做個紀錄,免得時間過了之後自己又忘記了。


1. 建立 Azure SQL Database Server

因為後續會需要建立一個 SSISDB 的 Azure SQL Database ,因此我們需要先建立一個 Azure SQL Database Server ,加上目前還在公開預覽的階段,並不是所有的資料中心都有支援,要建立服務的時候,要記得選擇美東或歐洲。這裡我就先建立一個範例用的資料庫,並且指定伺服器是在美東。

2. 建立 Data Factory v2

基本上這個部分您要透過 Portal 來建立,或者是使用 PowerShell 來建立都可以,這裡我就偷懶直接在 Portal 去建立。要注意記得要將版本選擇 V2 ,地區我就直接用美東

3.安裝 AzureRM.DataFactorise 的  PowerShell 模組

如果您之前沒有安裝過,那正常來說可以在 PowerShell 環境下,透過 Install-Module AzureRM.DataFactories 來進行安裝 ( 要記得提升為系統管理員的權限 ) 。但如果您之前可能有安裝過舊版本的模組的話,那麼就可以透過 Update-Module AzureRM.DataFactories 的指令來做升級,這樣才可以執行後續步驟的 PowerShell 指令。

 

4. 建立 Integration Runtime

a. 設定變數

$SubscriptionName = "Microsoft Azure Sponsorship"
$ResourceGroupName = "DataFactory"
$DataFactoryName = "ssisdemo" 
$DataFactoryLocation = "EastUS" 

$AzureSSISName = "ssisir"
$AzureSSISDescription = "my ssis ir"
$AzureSSISLocation = "EastUS" 
# In public preview, only Standard_A4_v2, Standard_A8_v2, Standard_D1_v2, Standard_D2_v2, Standard_D3_v2, Standard_D4_v2 are supported
$AzureSSISNodeSize = "Standard_D1_v2"
$AzureSSISNodeNumber = 1 
$AzureSSISMaxParallelExecutionsPerNode = 1 

$SSISDBServerEndpoint = "datafactory1.database.windows.net"
$SSISDBServerAdminUserName = "admin"
$SSISDBServerAdminPassword = "P@ssw0rd"
$SSISDBPricingTier = "S1" 

 

b. 登入 Azure

Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionName $SubscriptionName

 

c. 設定 IR

$secpasswd = ConvertTo-SecureString $SSISDBServerAdminPassword -AsPlainText -Force
$serverCreds = New-Object System.Management.Automation.PSCredential($SSISDBServerAdminUserName, $secpasswd)
Set-AzureRmDataFactoryV2IntegrationRuntime  -ResourceGroupName $ResourceGroupName `
                                            -DataFactoryName $DataFactoryName `
                                            -Name $AzureSSISName `
                                            -Type Managed `
                                            -CatalogServerEndpoint $SSISDBServerEndpoint `
                                            -CatalogAdminCredential $serverCreds `
                                            -CatalogPricingTier $SSISDBPricingTier `
                                            -Description $AzureSSISDescription `
                                            -Location $AzureSSISLocation `
                                            -NodeSize $AzureSSISNodeSize `
                                            -NodeCount $AzureSSISNodeNumber `
                                            -MaxParallelExecutionsPerNode $AzureSSISMaxParallelExecutionsPerNode 

d. 建立 IR ( 此段耗時最久 , 可能會需要 20-30 分鐘 , 如果使用 ISE 的環境去建立的話,應該會出現進度條提示執行進度 ) 

Start-AzureRmDataFactoryV2IntegrationRuntime -ResourceGroupName $ResourceGroupName `
                                             -DataFactoryName $DataFactoryName `
                                             -Name $AzureSSISName `
                                             -Force

透過上述的這些步驟,應該就可以把 Integration Runtime 給設定好,並且建立好 SSISDB,接下來我們就可以來看看怎麼使用 SSIS 囉。