在指令碼元件中使用變數
適用於:SQL Server Azure Data Factory 中的 SSIS Integration Runtime
變數會儲存封裝及其容器、工作與事件處理常式在執行階段所能使用的值。 如需詳細資訊,請參閱 Integration Services (SSIS) 變數。
您可以在 [指令碼轉換編輯器] 的 [指令碼] 頁面上的 [ReadOnlyVariables] 與 [ReadWriteVariables] 欄位中輸入以逗號分隔的變數清單,來將現有的變數以唯讀或讀取/寫入存取的方式提供自訂指令碼使用。 請記住變數名稱有區分大小寫。 使用 Value 屬性讀取和寫入個別變數。 當指令碼在執行階段操作變數時,指令碼元件會在幕後處理任何所需的鎖定。
重要
ReadWriteVariables 的集合只能在 PostExecute 方法中使用,才能最佳化效能並將鎖定衝突的風險降到最低。 因此您無法在處理每一列資料時,直接增量封裝變數值。 請改為遞增區域變數值,並在處理所有的資料之後,將封裝變數值設定為 PostExecute 方法中的區域變數值。 您也可以使用 VariableDispenser 屬性,以解決這個限制,如本主題稍後所述。 不過,在處理每個資料列時直接寫入封裝變數,將會對效能產生負面的影響,並增加鎖定衝突的風險。
如需 [指令碼轉換編輯器] 之 [指令碼] 頁面的詳細資訊,請參閱在指令碼元件編輯器中設定指令碼元件和指令碼轉換編輯器 (指令碼頁面)。
指令碼元件會在 ComponentWrapper 專案項目中建立 Variables 集合類別,並針對每個預先設定的變數值提供一個強型別存取子屬性 (其名稱與變數本身的名稱相同)。 此集合是透過 ScriptMain 類別的 Variables 屬性來公開。 存取子屬性會提供適當的唯讀或是讀取/寫入權限給變數值。 例如,如果您已將名為 MyIntegerVariable
的整數變數加入 [ReadOnlyVariables] 清單,可以使用下列程式碼在指令碼中擷取其值:
Dim myIntegerVariableValue As Integer = Me.Variables.MyIntegerVariable
您也可以使用透過呼叫 Me.VariableDispenser
來存取的 VariableDispenser 屬性,以使用指令碼元件中的變數。 在這種情況下,您不是為變數使用具類型和具名的存取子屬性,而是直接存取變數。 在使用 VariableDispenser時,您必須在自己的程式碼中處理變數值的鎖定語意和資料類型的轉換。 如果您想要使用在設計階段無法使用,但是會在執行階段以程式設計方式建立的變數,就必須使用 VariableDispenser 屬性,而不是具名與具類型的存取子屬性。