微軟 BI 系列隨筆 - SSIS 基礎(chǔ) - 參數(shù)與環(huán)境
簡(jiǎn)介
在上一篇博客中,主要講述了如何實(shí)現(xiàn)SSIS的項(xiàng)目部署,參見 微軟 BI 系列隨筆 - SSIS 2012 基礎(chǔ) - SSIS 項(xiàng)目部署模型
本文主要介紹SSIS 2012中的參數(shù)與環(huán)境,以及如何利用這些信息來(lái)實(shí)現(xiàn)SSIS項(xiàng)目的開發(fā)和部署之后的運(yùn)行。
關(guān)于參數(shù)
SSIS 2012中參數(shù)主要分為項(xiàng)目參數(shù)和包參數(shù)。參數(shù)在包的運(yùn)行過(guò)程中是只讀的。正確的使用參數(shù)能大大提高我們開發(fā)和部署時(shí)的效率。
項(xiàng)目參數(shù)
項(xiàng)目參數(shù)是SSIS 2012中新加入的功能。項(xiàng)目參數(shù)可以在項(xiàng)目?jī)?nèi)所有的包中共享,一次配置,多處使用。因此在項(xiàng)目參數(shù)中,通常是設(shè)置一些比較通用的信息,比如數(shù)據(jù)庫(kù)連接,服務(wù)器連接,或者其他的業(yè)務(wù)范疇的信息。
下圖列出了在項(xiàng)目中常用的一些參數(shù)設(shè)置。

通過(guò)設(shè)定項(xiàng)目使用的數(shù)據(jù)庫(kù)連接信息,就可以在項(xiàng)目的Connection manager中使用這些參數(shù)實(shí)現(xiàn)動(dòng)態(tài)的連接。

包參數(shù)
包參數(shù)通常定義包執(zhí)行時(shí)需要的一些數(shù)據(jù),比如篩選文件的條件,文件采集的位置,功能的開關(guān)等等。這些參數(shù)定義在包級(jí)別,相當(dāng)于一個(gè)程序的入口參數(shù)。

環(huán)境
在項(xiàng)目的開發(fā)到交付的過(guò)程中,通常會(huì)有各種環(huán)境(DEV,STG,UAT,PRD),SSIS2012中引入了環(huán)境(Environment)來(lái)適配。
這個(gè)環(huán)境是存在于SSIS目錄(Intergration Services Catalogs)中,在部署完一個(gè)SSIS項(xiàng)目后,在項(xiàng)目同級(jí)別目錄會(huì)自動(dòng)創(chuàng)建一個(gè)環(huán)境(Environments)目錄。在這個(gè)目錄下面可以添加我們的運(yùn)行時(shí)環(huán)境配置。
下面寫一下為項(xiàng)目配置環(huán)境的步驟。
添加環(huán)境
在環(huán)境文件夾上右鍵單擊,選擇“添加環(huán)境”,系統(tǒng)會(huì)彈出一個(gè)創(chuàng)建環(huán)境的窗口,需要填寫環(huán)境名字和描述。如下圖

點(diǎn)擊OK將會(huì)在環(huán)境文件夾創(chuàng)建新環(huán)境。

創(chuàng)建環(huán)境變量
選擇剛剛創(chuàng)建的環(huán)境,右鍵單擊選擇屬性。這時(shí)候會(huì)打開環(huán)境屬性窗口。在窗口左邊選擇頁(yè)面中點(diǎn)擊變量,在右邊的窗口中可以創(chuàng)建一系列的變量。這些變量可以與包和項(xiàng)目中定義的參數(shù)相對(duì)應(yīng),一個(gè)參數(shù)對(duì)應(yīng)一個(gè)變量。建議將變量名設(shè)置為與參數(shù)名稱一樣。如果兩個(gè)包使用了同樣的參數(shù)名稱,值不一樣,可以在變量名前加前綴標(biāo)志。我創(chuàng)建的環(huán)境變量如下(紅線框起來(lái)的部分是因?yàn)閮蓚€(gè)包使用了同樣的參數(shù)名加以區(qū)分):

在權(quán)限頁(yè)可以設(shè)置每個(gè)賬戶對(duì)這個(gè)環(huán)境的讀寫和管理權(quán)限。
復(fù)制環(huán)境變量
通常情況下需要配置多個(gè)環(huán)境,這些環(huán)境會(huì)使用同樣的環(huán)境變量名,只是值不一樣。如果變量很多的話,一個(gè)個(gè)配置起來(lái)也很麻煩。這個(gè)時(shí)候該怎么辦呢?開動(dòng)我們的大腦,想想之前配置的DEV環(huán)境變量都存在哪里了?DEV環(huán)境變量都存在哪里了?DEV環(huán)境變量都存在哪里了?(重要的事情說(shuō)三遍)
這個(gè)時(shí)候我們?nèi)ゲ榭匆幌聰?shù)據(jù)庫(kù),發(fā)現(xiàn)有一個(gè)叫SSISDB的庫(kù),在這個(gè)庫(kù)里面有幾張表看起來(lái)和我們的環(huán)境有關(guān)系。他們分別是[internal].[environments],[internal].[environment_variables],[internal].[environment_permissions]。怎么樣,是不是已經(jīng)要腦洞大開了,沒錯(cuò),就是這三張表。
[internal].[environments] -- 這個(gè)表存放的是環(huán)境信息,主要有環(huán)境ID,名稱,文件夾ID,描述和創(chuàng)建者信息。
[internal].[environment_variables] -- 這個(gè)表存放的是環(huán)境變量信息,主要有變量ID,環(huán)境ID,名稱,描述,類型,值以及其他信息。
[internal].[environment_permissions] -- 這個(gè)表存放的是權(quán)限控制信息。
知道了這么多以后該怎么做,相信大家已經(jīng)心里有數(shù)了。但是我還是給大家列出了詳細(xì)的步驟哦(樓主好人,謝謝分享)
首先是按照你的需要,在環(huán)境文件夾中創(chuàng)建你所有需要的環(huán)境,比如我創(chuàng)建了DEV,INT,STG,PRD環(huán)境。除了DEV中是已經(jīng)配置了變量,其他的目前都是空白。這些環(huán)境每個(gè)都有一個(gè)唯一的標(biāo)志,在屬性頁(yè)的***頁(yè)里面(怎樣,我不說(shuō)你注意到了嗎?)
接下來(lái)在SSISDB數(shù)據(jù)庫(kù)執(zhí)行如下腳本,比如我的DEV環(huán)境標(biāo)志是1,INT的標(biāo)志是2,我現(xiàn)在要把DEV的變量復(fù)制到INT里面去。
- INSERT INTO [internal].[environment_variables]
- ([environment_id]
- ,[name]
- ,[description]
- ,[type]
- ,[sensitive]
- ,[value]
- ,[sensitive_value]
- ,[base_data_type])
- SELECT 2 as environment_id --INT Environment ID
- ,[name]
- ,[description]
- ,[type]
- ,[sensitive]
- ,[value]
- ,[sensitive_value]
- ,[base_data_type]
- FROM [SSISDB].[internal].[environment_variables]
- where environment_id = 1 --DEV Environment ID
好了,現(xiàn)在打開INT環(huán)境,查看一下他的屬性,變量是不是都在了啊。(笑濕了吧)
使用同樣的語(yǔ)句來(lái)給其他環(huán)境創(chuàng)建變量吧。
引用環(huán)境變量
配置了這么多環(huán)境和變量了(累濕了),如何使用它們呢?下面接著給大家伙細(xì)細(xì)道來(lái)。
在項(xiàng)目文件夾選擇之前部署的項(xiàng)目,右擊(右鍵單擊)選擇配置,選擇參考頁(yè)(References)。這里有一個(gè)列表是用來(lái)選擇環(huán)境和文件夾的。點(diǎn)擊添加按鈕,有一個(gè)彈出框讓你選擇環(huán)境。你可以選擇當(dāng)前目錄下面或者其他目錄下面(你會(huì)定義到別的項(xiàng)目的目錄下面去嗎?)的環(huán)境,一次只能選擇一個(gè)(連多選都不給咱)。然后就可以看到環(huán)境一個(gè)個(gè)的添加進(jìn)來(lái)了。我的長(zhǎng)成下面這個(gè)樣子了:

然后你就可以在參數(shù)頁(yè)使用環(huán)境里面的變量了喲。
選擇參數(shù)頁(yè),選好作用域(Scope),然后可以看到你在項(xiàng)目級(jí)別拉,包級(jí)別拉定義的參數(shù)了吧。選中一個(gè)參數(shù),單擊Value右邊的那個(gè)按鈕,在彈出的框框里面選擇使用環(huán)境變量,如下所示。

現(xiàn)在知道在各個(gè)環(huán)境中定義相同的變量名的好處了吧(記得值不要一樣哦)。快去給每個(gè)參數(shù)設(shè)置一下吧。
使用環(huán)境變量
到這一步已經(jīng)接近大功告成了(碼字好累,繼續(xù)寫),但是這么多環(huán)境變量怎么使用呢?
想想我們開發(fā)了這么多包,又部署了,有配置了,主要是為了干甚呢?不就是為了執(zhí)行嗎。好吧,選中包,右擊選執(zhí)行。
怎么回事,那么多必填的值啊,往下看,哦,要選擇環(huán)境啊。
之前是這樣:

之后是這樣:

好了,點(diǎn)擊OK按鈕去執(zhí)行吧。你也可以從上邊選擇生成腳本去執(zhí)行(自己找吧,不截圖了)。
到這一步,一切都很***了。
使用了參數(shù)以后,整個(gè)項(xiàng)目的開發(fā),部署以及運(yùn)行,一切都如行云流水,就好象子畫帶著小骨在御劍飛行啊,好舒服的呢。
接下來(lái),老大,我的SSIS是要長(zhǎng)期執(zhí)行的,怎么做啊?
別急啊,中午了,下一篇繼續(xù)講解如何將SSIS部署到SQL Job吧。