共用方式為


識別碼 (SSIS)

在表達式中,標識碼是可供作業使用的數據行和變數。 表達式可以使用一般和限定的識別碼。

一般標識碼

一般標識碼是不需要其他限定碼的標識碼。 例如,MiddleNameAdventureWorks 資料庫的 Contacts 數據表中的數據行,是一般識別符。

一般識別碼的命名必須遵循下列規則:

  • 名稱的第一個字元必須是 Unicode Standard 2.0 或底線 (_) 所定義的字母。

  • 後續字元可以是 Unicode Standard 2.0、底線 (_)、@、$和 # 字元中所定義的字母或數位。

這很重要

嵌入的空格和特殊字元,除了列出的以外,在標準識別符中無效。 若要使用空格和特殊字元,您必須使用限定識別碼,而不是一般標識碼。

限定標識碼

限定標識碼是以方括弧分隔的標識碼。 標識元可能需要分隔符,因為標識符的名稱包含空格,或因為標識碼名稱不是以字母或底線字元開頭。 例如,數據行名稱 中間名稱 必須以方括弧限定,並在表達式中寫入為 [中間名稱]。

如果標識碼的名稱包含空格,或名稱不是有效的一般標識碼名稱,則必須限定標識碼。 表達式評估工具會使用左括號和右括弧來限定標識碼。 方括弧會放在字串的第一個和最後一個位置。 例如,標識碼 5$> 會變成 [5$>]。 括號可以搭配數據行名稱、變數名稱和函式名稱使用。

如果您使用 [SSIS 設計工具] 對話框來建置運算式,則正則標識符會自動以括弧括住。 不過,只有在名稱包含無效字元時,才需要方括弧。 例如,名為 MiddleName 的欄位在不使用括弧的情況下也是有效的。

您無法參考在表示式中包含括號的數據行名稱。 例如,數據行名稱 Column[1] 不能用在表達式中。 若要在表達式中使用數據行,必須將它重新命名為不含括號的名稱。

系譜識別碼

表達式可以使用歷程標識碼來參考欄位。 當您第一次建立套件時,會自動指派譜系標識符。 您可以在 SSIS 設計工具中,於 [進階編輯器] 對話方塊的 [資料行屬性] 索引標籤上檢視資料行的歷程識別碼。

如果您使用其歷程標識碼來參考數據行,標識碼必須包含磅號 (#) 字元前置詞。 例如,具有譜系標識碼 147 的數據行必須參考為 #147。

如果表達式剖析成功,表達式評估工具會將系譜識別符替換為對話框中的欄位名稱。

唯一欄位名稱

封裝中使用的多個元件可以公開具有相同名稱的數據行。 當在表達式中使用這些欄位時,必須先消除它們的歧義,才能成功剖析表達式。 表達式評估工具支援點表示法,以識別數據行的來源。 例如,名為 Age 的兩個數據行會變成 FlatFileSource.AgeOLEDBSource.Age,這表示其來源為 FlatFileSource 或 OLEDBSource。 剖析器會將完整名稱視為單一欄位名稱。

來源元件名稱和數據行名稱會分別限定。 下列範例顯示虛線表示法中括弧的有效用法:

  • 來源元件名稱包含空格。

    [MySo urce].Age  
    
  • 數據行名稱中的第一個字元無效。

    MySource.[#Age]  
    
  • 來源元件和數據行名稱包含無效的字元。

    [MySource?].[#Age]  
    

這很重要

如果虛線表示法中的兩個元素都以一對括弧括住,表達式評估工具會將配對解譯為單一標識符,而不是源數據行組合。

表達式中的變數

在表達式中參考的變數必須包含 @ 前置詞。 例如, Counter 變數是使用 @Counter 來參考。 @ 字元不是變數名稱的一部分;它只會識別表達式評估工具的變數。 如果您使用 SSIS 設計工具提供的對話框來建置表示式,則 @ 字元會自動新增至變數名稱。 在 @ 字元和變數名稱之間包含空格無效。

變數名稱會遵循與其他一般標識元相同的規則:

  • 名稱的第一個字元必須是 Unicode Standard 2.0 或底線 (_) 所定義的字母。

  • 後續字元可以是 Unicode Standard 2.0、底線 (_)、@、$和 # 字元中所定義的字母或數位。

如果變數名稱包含所列以外的字元,變數必須以方括弧括住。 例如,具有空格的變數名稱必須以方括弧括住。 左括弧緊接 @ 字元。 例如, [我的名稱] 變數會參考為 @[My Name]。 在變數名稱和括弧之間包含空格無效。

備註

使用者定義和系統變數的名稱會區分大小寫。

唯一變數名稱

Integration Services 支援自定義變數,並提供一組系統變數。 根據預設,自定義變數屬於 User 命名空間,而系統變數則屬於 系統 命名空間。 您可以為自定義變數建立其他命名空間,並更新命名空間名稱,以符合應用程式的需求。 表達式產生器會列出所有命名空間中的範圍內變數。

所有變數都有範圍且屬於命名空間。 變數具有封裝範圍或封裝中容器或工作的範圍。 SSIS 設計工具中的運算式產生器只會列出範圍中的變數。 如需詳細資訊,請參閱Integration Services (SSIS) 變數以及在封裝中使用變數

表達式中使用的變數必須具有表達式評估工具的唯一名稱,才能正確評估表達式。 如果封裝使用多個具有相同名稱的變數,其命名空間必須不同。 Integration Services 提供命名空間解析運算符,其中包含兩個冒號(::),以限定具有其命名空間的變數。 例如,下列表達式使用兩個名為 Count 的變數;其中一個屬於 User 命名空間,另一個屬於 MyNamespace 命名空間。

@[User::Count] > @[MyNamespace::Count]  

這很重要

您必須以括弧括住命名空間和限定變數名稱的組合,表達式評估工具才能辨識變數。

如果使用者命名空間中的Count 值為 10,且 MyNamespace 中的 Count 值為 2,則表達式會評估為 true ,因為表達式評估工具會辨識兩個不同的變數。

如果變數名稱不是唯一的,則不會發生錯誤。 相反地,表達式評估工具只會使用變數的一個實例來評估表達式,並傳回不正確的結果。 例如,下列表達式的目的是比較兩個不同的 Count 變數的值 (10 和 2),但表示式評估 false 結果為 ,因為表達式評估工具會使用 Count 變數的 相同實例兩次。

@Count > @Count  

pragmaticworks.com 上的一篇技術文章 SSIS 運算式速查表