Integration Services (SSIS) 變數
變數會儲存 SQL Server Integration Services 套件及其容器、工作與事件處理常式可在執行階段使用的值。 「指令碼」工作和「指令碼」元件中的指令碼也可以使用變數。 將工作和容器排序成工作流程的優先順序條件約束,可在其條件約束定義含有運算式時使用變數。
您可以基於下列用途使用 Integration Services 套件中的變數:
在執行階段更新封裝元素的屬性。 例如,您可以動態設定「Foreach 迴圈」容器允許的並行可執行檔數目。
包含記憶體中的查閱資料表。 例如,封裝可執行用以載入一個具有資料值之變數的「執行 SQL」工作。
載入具有資料值的變數,然後將其用於指定 WHERE 子句中的搜尋條件。 例如,「指令碼」工作中的指令碼可以更新 Transact-SQL 陳述式在「執行 SQL」工作中所使用的變數值。
載入一個值為整數的變數,然後將該值用於控制封裝控制流程中的迴圈。 例如,您可以使用「For 迴圈」容器之評估運算式中的變數來控制反覆運算。
在執行階段擴展 Transact-SQL 陳述式的參數值。 例如,封裝可執行「執行 SQL」工作,然後使用變數動態設定 Transact-SQL 陳述式中的參數。
建立包含變數值的運算式。 例如,「衍生的資料行」轉換可使用變數值乘以資料行值而取得的結果來擴展資料行。
系統及使用者定義變數
Integration Services 支援兩種類型的變數:使用者定義的變數和系統變數。 使用者定義的變數會由套件開發人員定義,而系統變數則由 Integration Services 定義。 您可以根據封裝需要建立許多使用者自訂變數,但無法建立其他系統變數。
所有的變數 (系統變數和使用者定義變數) 都可在「執行 SQL」工作用來將變數對應至 SQL 陳述式之參數的參數繫結中使用。 如需詳細資訊,請參閱 執行 SQL 工作 和 執行 SQL 工作中的參數和傳回碼。
注意
使用者自訂變數和系統變數的名稱會區分大小寫。
您可以為下列所有 Integration Services 容器類型建立使用者定義的變數:套件、Foreach 迴圈容器、For 迴圈容器、時序容器、工作和事件處理常式。 使用者自訂變數是容器 Variables 集合的成員。
如果您使用 SSIS 設計師建立套件,則可在 SSIS 設計師之 [套件總管] 索引標籤上的 [變數] 資料夾中,查看 [變數] 集合的成員。 資料夾會列出使用者自訂變數和系統變數。
您可以利用下列方式設定使用者自訂變數:
提供變數的名稱和描述。
指定變數的命名空間。
指示其值變更時變數是否會引發事件。
指示變數是唯讀還是可讀寫。
使用運算式的評估結果,以設定變數值。
建立封裝或封裝物件 (例如工作) 範圍內的變數。
指定變數的值和資料類型。
系統變數上唯一可設定的選項是指定其變更值時,它們是否會引發事件。
針對不同的容器類型可使用一組不同的系統變數。 如需封裝及其元素所使用之系統變數的詳細資訊,請參閱 系統變數。
如需變數之實際使用狀況的詳細資訊,請參閱 在封裝中使用變數。
變數屬性
您可以透過在 [變數] 視窗或 [屬性] 視窗中設定下列屬性來設定使用者定義變數。 但某些屬性只能在 [屬性] 視窗中設定。
注意
系統變數上唯一可設定的選項是指定其變更值時,它們是否會引發事件。
描述
指定變數的描述。
EvaluateAsExpression
當 屬性設定為 True
時,提供的運算式會用來設定變數值。
運算式
指定指派給變數的運算式。
名稱
指定變數名稱。
命名空間
Integration Services 提供兩個命名空間:User 和 System。 依預設,自訂變數屬於 User 命名空間,而系統變數則屬於 System 命名空間。 您可以為使用者定義變數建立其他命名空間,並變更 User 命名空間的名稱,但是您無法變更 System 命名空間的名稱,也無法將變數加入 System 命名空間或將系統變數指派給其他命名空間。
RaiseChangedEvent
當此屬性設為 True
時,OnVariableValueChanged
事件會在變數將值變更時產生。
唯讀
當此屬性設為 False
,表示變數可讀取\寫入。
影響範圍
注意
您只能透過按一下 [變數] 視窗中的 [移動變數] 來變更此屬性設定。
變數建立於封裝範圍之內,或封裝中的容器、工作或事件處理常式範圍之內。 因為封裝容器位於容器階層的最上層,所以具有封裝範圍的變數在功能上與全域變數相同,且可以由封裝內的所有容器使用。 同樣地,在容器 (例如「For 迴圈」容器) 範圍中定義的變數可由「For 迴圈」容器內的所有工作或容器使用。
如果封裝使用「執行封裝」工作來執行其他封裝,則在呼叫封裝或「執行封裝」工作範圍中定義的變數可用於所呼叫的封裝,方法是使用「父封裝變數」組態類型。 如需相關資訊,請參閱 Package Configurations。
IncludeInDebugDump
指出偵錯傾印檔案中是否要包含變數值。
針對使用者定義的變數和系統變數, InclueInDebugDump 選項的預設值為 true
。
不過,針對使用者定義的變數,系統會在符合下列條件時,將 IncludeInDebugDump 選項 false
重設為 :
如果 EvaluateAsExpression 變數屬性設定
true
為 ,則系統會將 IncludeInDebugDump 選項重設為false
。若要在偵錯傾印檔案中包含運算式文字做為變數值,請將 IncludeInDebugDump 選項設定為
true
。如果變數資料類型變更為字串,系統會將 IncludeInDebugDump 選項重設為
false
。
當系統將 IncludeInDebugDump 選項 false
重設為 時,這可能會覆寫使用者選取的值。
值
使用者自訂變數值可以是常值或是運算式。 變數包含設定變數值和該值之資料類型的選項。 兩個屬性必須相容:例如,同時使用字串值和整數資料類型是無效的。
如果變數設定為做為運算式評估,則必須提供運算式。 在執行階段會評估運算式,且會將變數值設定為評估結果。 例如,如果變數使用運算式 DATEPART("month", GETDATE())
,則變數的值將為目前日期所在之月份數。 運算式必須是使用 SSIS 運算式文法語法的有效運算式。 當運算式搭配變數使用時,運算式可以使用運算式文法提供的常值、運算子和函數,但是運算式無法參考封裝中資料流程的資料行。 運算式的最大長度為 4000 個字元。 如需詳細資訊,請參閱 Integration Services (SSIS) 運算式。
ValueType
注意
此屬性值會顯示在 [變數] 視窗中的 [資料類型] 資料行中。
指定變數值的資料類型。
設定變數
您可以透過 SSIS 設計師或以程式設計方式設定屬性。
如需您可以在 SSIS Designer中設定之屬性的詳細資訊,請參閱變數視窗。
若要了解有關變數屬性,以及有關以程式設計方式設定這些屬性的詳細資訊,請參閱 Variable。