SSIS 參數與環境


微軟 BI 系列隨筆 - SSIS 基礎 - 參數與環境


簡介

在上一篇博客中,主要講述了如何實現SSIS的項目部署,參見 微軟 BI 系列隨筆 - SSIS 2012 基礎 - SSIS 項目部署模型

本文主要介紹SSIS 2012中的參數與環境,以及如何利用這些信息來實現SSIS項目的開發和部署之后的運行。

關於參數

SSIS 2012中參數主要分為項目參數和包參數。參數在包的運行過程中是只讀的。正確的使用參數能大大提高我們開發和部署時的效率。

  • 項目參數

  項目參數是SSIS 2012中新加入的功能。項目參數可以在項目內所有的包中共享,一次配置,多處使用。因此在項目參數中,通常是設置一些比較通用的信息,比如數據庫連接,服務器連接,或者其他的業務范疇的信息。

  下圖列出了在項目中常用的一些參數設置。

  

  通過設定項目使用的數據庫連接信息,就可以在項目的Connection manager中使用這些參數實現動態的連接。

  

  • 包參數

  包參數通常定義包執行時需要的一些數據,比如篩選文件的條件,文件采集的位置,功能的開關等等。這些參數定義在包級別,相當於一個程序的入口參數。

  

 

環境

在項目的開發到交付的過程中,通常會有各種環境(DEV,STG,UAT,PRD),SSIS2012中引入了環境(Environment)來適配。

這個環境是存在於SSIS目錄(Intergration Services Catalogs)中,在部署完一個SSIS項目后,在項目同級別目錄會自動創建一個環境(Environments)目錄。在這個目錄下面可以添加我們的運行時環境配置。

下面寫一下為項目配置環境的步驟。

  • 添加環境

  在環境文件夾上右鍵單擊,選擇“添加環境”,系統會彈出一個創建環境的窗口,需要填寫環境名字和描述。如下圖

  

  點擊OK將會在環境文件夾創建新環境。

  

  • 創建環境變量

  選擇剛剛創建的環境,右鍵單擊選擇屬性。這時候會打開環境屬性窗口。在窗口左邊選擇頁面中點擊變量,在右邊的窗口中可以創建一系列的變量。這些變量可以與包和項目中定義的參數相對應,一個參數對應一個變量。建議將變量名設置為與參數名稱一樣。如果兩個包使用了同樣的參數名稱,值不一樣,可以在變量名前加前綴標志。我創建的環境變量如下(紅線框起來的部分是因為兩個包使用了同樣的參數名加以區分):

  

  在權限頁可以設置每個賬戶對這個環境的讀寫和管理權限。

  • 復制環境變量

   通常情況下需要配置多個環境,這些環境會使用同樣的環境變量名,只是值不一樣。如果變量很多的話,一個個配置起來也很麻煩。這個時候該怎么辦呢?開動我們的大腦,想想之前配置的DEV環境變量都存在哪里了?DEV環境變量都存在哪里了?DEV環境變量都存在哪里了?(重要的事情說三遍)

  這個時候我們去查看一下數據庫,發現有一個叫SSISDB的庫,在這個庫里面有幾張表看起來和我們的環境有關系。他們分別是[internal].[environments],[internal].[environment_variables],[internal].[environment_permissions]。怎么樣,是不是已經要腦洞大開了,沒錯,就是這三張表。

  [internal].[environments] -- 這個表存放的是環境信息,主要有環境ID,名稱,文件夾ID,描述和創建者信息。

  [internal].[environment_variables] -- 這個表存放的是環境變量信息,主要有變量ID,環境ID,名稱,描述,類型,值以及其他信息。

  [internal].[environment_permissions] -- 這個表存放的是權限控制信息。

  知道了這么多以后該怎么做,相信大家已經心里有數了。但是我還是給大家列出了詳細的步驟哦(樓主好人,謝謝分享)

  首先是按照你的需要,在環境文件夾中創建你所有需要的環境,比如我創建了DEV,INT,STG,PRD環境。除了DEV中是已經配置了變量,其他的目前都是空白。這些環境每個都有一個唯一的標志,在屬性頁的第一頁里面(怎樣,我不說你注意到了嗎?)

  接下來在SSISDB數據庫執行如下腳本,比如我的DEV環境標志是1,INT的標志是2,我現在要把DEV的變量復制到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

  好了,現在打開INT環境,查看一下他的屬性,變量是不是都在了啊。(笑濕了吧)

  使用同樣的語句來給其他環境創建變量吧。

  • 引用環境變量

  配置了這么多環境和變量了(累濕了),如何使用它們呢?下面接着給大家伙細細道來。

  在項目文件夾選擇之前部署的項目,右擊(右鍵單擊)選擇配置,選擇參考頁(References)。這里有一個列表是用來選擇環境和文件夾的。點擊添加按鈕,有一個彈出框讓你選擇環境。你可以選擇當前目錄下面或者其他目錄下面(你會定義到別的項目的目錄下面去嗎?)的環境,一次只能選擇一個(連多選都不給咱)。然后就可以看到環境一個個的添加進來了。我的長成下面這個樣子了:

  

  然后你就可以在參數頁使用環境里面的變量了喲。

  選擇參數頁,選好作用域(Scope),然后可以看到你在項目級別拉,包級別拉定義的參數了吧。選中一個參數,單擊Value右邊的那個按鈕,在彈出的框框里面選擇使用環境變量,如下所示。

  

  現在知道在各個環境中定義相同的變量名的好處了吧(記得值不要一樣哦)。快去給每個參數設置一下吧。

  • 使用環境變量

  到這一步已經接近大功告成了(碼字好累,繼續寫),但是這么多環境變量怎么使用呢?

  想想我們開發了這么多包,又部署了,有配置了,主要是為了干甚呢?不就是為了執行嗎。好吧,選中包,右擊選執行。

  怎么回事,那么多必填的值啊,往下看,哦,要選擇環境啊。

  之前是這樣:

  

  之后是這樣:

  

  好了,點擊OK按鈕去執行吧。你也可以從上邊選擇生成腳本去執行(自己找吧,不截圖了)。

  到這一步,一切都很完美了。

  使用了參數以后,整個項目的開發,部署以及運行,一切都如行雲流水,就好象子畫帶着小骨在御劍飛行啊,好舒服的呢。

  接下來,老大,我的SSIS是要長期執行的,怎么做啊?

  別急啊,中午了,下一篇繼續講解如何將SSIS部署到SQL Job吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM