SSIS 變數和表示式

2021-06-16 05:21:41 字數 1509 閱讀 3842

變數和屬性表示式是 ssis 設計中非常重要的組成部分,它們是提高ssis 靈活性的主要手段。變數和屬性表示式是互相關聯的,通常在屬性表示式中常常使用變數,所以我把他們放在一起介紹。

變數

早在 sql server dts 中就引入了變數的概念,它的定義就像其他程式語言一樣,起到在程式中 ssis package 中重複使用,靈活賦值的作用。程式語言中有全域性變臉和區域性變數的區別,從 ssis 2005 開始,也引入了這個類似的定義。

ssis 變數從作用範圍上說有兩種分類:package 級別的變數和 container 級別的變數。package 級別的變數跟全域性變數的定義類似,它的作用範圍是整個 ssis package,在 package 的任何乙個元件中都可以訪問它。container 級別的變數類似於區域性變數,它的使用範圍侷限於定義它的  container 或者是控制流任務。同一範圍的變數它們的名字不能重複,但是不同範圍的變數,他們的名字可以重複!

ssis 變數從定義方式分為系統變數使用者自定義變數,系統變數顧名思義 是系統內建的變數,我們不能增加和刪除系統變數,我們只能讀取它們的值而不能修改它們的值。系統變數儲存了一切與當前 package 或者 container 有關的資訊,比如 container 的名字、建立的時間、版本號等等。如果我們的package 用錯誤捕獲的設定,系統變數中好儲存著錯誤資訊等。系統變數的訪問是根據當前 package 中的任務不同而變化的。

使用者自定義變數是最用開發者定義的變數,它常用來動態地設定 package 中可以訪問的資訊,或者作為處理過程中的中間**儲存動態的值等。我們在使用屬性表示式的時候通常需要訪問系統變數或者用於自定義變數。

不論是系統變數還是使用者自定義變數,它們有乙個有用的屬性:raise change event,這個屬性的預設值是 false.  如果它的值設定為 ture, 那麼當ssis package 設定了執行日誌(logging) 的時候,日誌中的 onvariablevaluechanged 事件才能捕獲到這個變數的變化。也就是說在預設情況下,即使在 logging 中選擇了 onvariablevaluechanged 屬性,如果變數的 raise change event 仍然是預設值 false 的話,那麼它在執行中值的變化也不能被 log 記錄下來。

屬性表示式

屬性表示式是 ssis package 開發中相對比較高階的話題,它可以是我們的 ssis package 變得相當地靈活。屬性表示式存在於所有的控制流任務和資料連線中,它用來在執行階段設定該任務或者資料連線的某些屬性,如果乙個控制流任務使用屬性表示式 設定了它的值,那麼它在屬性表示式中設定的值將在執行階段覆蓋設計階段的賦值。

下面我用乙個例子來介紹屬性表示式的使用,在這個例子中我使用乙個變數來動態地設定 sql statement 的值

「insert into dbo.clients (clientname) values (『」 +  @[user::myname] + 「『 + convert(varchar,?))」

SSIS 實用的表示式

下面,列出一些實用的表示式 1,路徑取檔名 right filepath findstring reverse filepath 1 1 right user filepath findstring reverse user filepath 1 1 2,空字元設定預設值 len string co...

變數和表示式 變數

變數關係到資料的儲存。實際上,可以把計算機記憶體中的變數看作架子上的盒子。在這些盒子中,可以放入一些東西,當然也可以再把它們取出來,或者只是看看盒子裡是否有東西。變數也是這樣,資料可放在變數中,可以從變數中取出資料或檢視它們。儘管計算機中的所有資料都是一樣的東西 一組0和1 但變數有不同的含義,成為...

SSIS 表示式 操作符和函式

動態包物件包括變數,引數和表示式。變數主要為包提供一種物件之間相互通訊的方法,變數的值是可以更新的。而引數不同於變數,引數的值在包中是不能修改的,只能通過外部來設定引數。表示式可以引用變數 引數 常量 函式和運算子,當執行包時,通過評估表示式的值實現工作流或包的動態配置。動態包可以在執行時重新配置,...