Identificatori (SSIS)Identifiers (SSIS)

Nelle espressioni gli identificatori sono colonne e variabili disponibili per l'operazione.In expressions, identifiers are columns and variables that are available to the operation. Le espressioni possono utilizzare identificatori regolari e qualificati.Expressions can use regular and qualified identifiers.

Identificatori regolariRegular Identifiers

Un identificatore regolare è un identificatore per cui non sono necessari ulteriori qualificatori.A regular identifier is an identifier that needs no additional qualifiers. È un identificatore regolare ad esempio la colonna MiddleNamedella tabella Contacts del database AdventureWorks .For example, MiddleName, a column in the Contacts table of the AdventureWorks database, is a regular identifier.

Per gli identificatori regolari sono previste le regole di denominazione seguenti:The naming of regular identifiers must follow these rules:

  • Il primo carattere del nome deve essere una lettera, come definito dallo standard Unicode 2.0, o un carattere di sottolineatura ().The first character of the name must be a letter as defined by the Unicode Standard 2.0, or an underscore ().

  • I caratteri successivi possono includere lettere o numeri, come definito dallo standard Unicode 2.0, il carattere di sottolineatura () e i caratteri @, $ e #.Subsequent characters can be letters or numbers as defined in the Unicode Standard 2.0, the underscore (), @, $, and # characters.

Importante

Gli identificatori regolari non possono contenere spazi e caratteri speciali diversi da quelli indicati.Embedded spaces and special characters, other than the ones listed, are not valid in regular identifiers. Se si desidera includere spazi e caratteri speciali, sarà necessario utilizzare un identificatore qualificato anziché un identificatore regolare.In order to use spaces and special characters, you must use a qualified identifier instead of a regular identifier.

Identificatori qualificatiQualified Identifiers

Un identificatore qualificato è un identificatore delimitato da parentesi quadre.A qualified identifier is an identifier that is delimited by brackets. Può essere necessario un delimitatore perché il nome dell'identificatore include spazi o il primo carattere del nome non è una lettera né il carattere di sottolineatura (_).An identifier may require a delimiter because the name of the identifier includes spaces, or because the identifier name does not begin with either a letter or the underscore character. Se si usa il nome di colonna Middle Name in un'espressione, ad esempio, sarà necessario qualificarlo racchiudendolo tra parentesi quadre, in modo da ottenere [Middle Name].For example, the column name Middle Name must be qualified by brackets and written as [Middle Name] in an expression.

Se il nome dell'identificatore include spazi o non è un nome di identificatore regolare valido, sarà necessario qualificarlo.If the name of the identifier includes spaces, or if the name is not a valid regular identifier name, the identifier must be qualified. Per qualificare gli identificatori l'analizzatore di espressioni utilizza le parentesi quadre aperta e chiusa ([]),The expression evaluator uses the opening and closing ([]) brackets to qualify identifiers. che occupano rispettivamente la prima e l'ultima posizione della stringa.The brackets are put in the first and the last position of the string. L'identificatore 5$> diventa ad esempio [5$>].For example, the identifier 5$> becomes [5$>]. È possibile utilizzare parentesi quadre con nomi di colonne, variabili e funzioni.Brackets can be used with column names, variable names, and function names.

Nelle espressioni compilate utilizzando le finestre di dialogo di Progettazione SSISSSIS , gli identificatori regolari vengono automaticamente racchiusi tra parentesi quadre.If you build expressions using the SSISSSIS Designer dialog boxes, regular identifiers are automatically enclosed in brackets. Le parentesi quadre sono tuttavia necessarie solo se il nome include caratteri non validi.However, brackets are required only if the name include invalid characters. Il nome di colonna MiddleName , ad esempio, è valido anche senza parentesi quadre.For example, the column named MiddleName is valid without brackets.

Nelle espressioni non è possibile fare riferimento a nomi di colonne che includono parentesi quadre.You cannot reference column names that include brackets in expressions. Il nome di colonna Column[1] , ad esempio, non può essere usato in un'espressione.For example, the column name Column[1] cannot be used in an expression. Per utilizzarlo in un'espressione, è necessario modificarlo in un nome che non includa parentesi quadre.To use the column in an expression it must be renamed to a name without brackets.

identificatori di derivazioneLineage Identifiers

Nelle espressioni è possibile utilizzare identificatori di derivazione per fare riferimento alle colonne.Expressions can use lineage identifiers to refer to columns. Gli identificatori di derivazione vengono assegnati automaticamente al momento della creazione del pacchetto.The lineage identifiers are assigned automatically when you first create the package. L'identificatore di derivazione di una colonna è visualizzato nella scheda Proprietà colonna della finestra di dialogo Editor avanzato di Progettazione SSISSSIS .You can view the lineage identifier for a column on the Column Properties tab of the Advanced Editor dialog box in the SSISSSIS Designer.

Per fare riferimento a una colonna tramite il relativo identificatore di derivazione, è necessario anteporre a quest'ultimo un simbolo di cancelletto (#) come prefisso.If you refer to a column using its lineage identifier, the identifier must include the pound (#) character prefix. Se ad esempio una colonna ha identificatore di derivazione 147, per farvi riferimento sarà necessario specificare #147.For example, a column with the lineage identifier 147 must be referenced as #147.

Se l'analisi di un'espressione viene completata regolarmente, l'analizzatore di espressioni sostituirà gli identificatori di derivazione con i nomi delle colonne nella finestra di dialogo.If an expression parses successfully, the expression evaluator replaces the lineage identifiers with column names in the dialog box.

Nomi di colonna univociUnique Column Names

In uno stesso pacchetto possono essere utilizzati più componenti che espongono colonne con lo stesso nome.Multiple components used in a package can expose columns with the same name. Per consentire l'analisi delle espressioni che utilizzano tali colonne, è necessario eliminare le ambiguità.If these columns are used in expressions, they must be disambiguated before the expressions can be parsed successfully. L'analizzatore di espressioni supporta la notazione con punto per l'identificazione dell'origine della colonna.The expression evaluator supports the dotted notation for identifying the source of the column. Due colonne con il nome Age possono ad esempio diventare FlatFileSource.Age e OLEDBSource.Age, per indicare che le rispettive origini sono FlatFileSource e OLEDBSource.For example, two columns named Age become FlatFileSource.Age and OLEDBSource.Age, which indicates that their sources are FlatFileSource or OLEDBSource. L'analizzatore gestisce il nome completo come un singolo nome di colonna.The parser treats the fully qualified name as a single column name.

I nomi dei componenti di origine e di colonna vengono qualificati separatamente.Source component names and column names are qualified separately. Negli esempi seguenti viene illustrato il corretto utilizzo delle parentesi quadre nella notazione con punto:The following examples show valid use of brackets in a dotted notation:

  • Il nome del componente di origine include spazi.The source component name includes spaces.

    [MySo urce].Age  
    
  • Il primo carattere del nome della colonna non è valido.The first character in the column name is not valid.

    MySource.[#Age]  
    
  • Il nome del componente di origine e quello della colonna contengono caratteri non validi.The source component and the column names contain invalid characters.

    [MySource?].[#Age]  
    
Importante

Se nella notazione con punto entrambi gli elementi sono racchiusi da una coppia di parentesi quadre, l'analizzatore di espressioni interpreta la coppia come un identificatore unico, non come combinazione origine-colonna.If both elements in dotted notation are enclosed in one pair of brackets, the expression evaluator interprets the pair as a single identifier, not a source-column combination.

Variabili nelle espressioniVariables in Expressions

Quando in un'espressione viene fatto riferimento a una variabile, è necessario anteporre il prefisso @ al nome della variabile.Variables, when referenced in expressions, must include the @ prefix. Ad esempio, il contatore variabile fa riferimento tramite @Counter.</span><span class="sxs-lookup">For example, the Counter variable is referenced by using @Counter.</span></span> Il carattere @ non fa parte del nome della variabile, ma consente all'analizzatore di espressioni di identificarla come tale.The @ character is not part of the variable name; it only identifies the variable to the expression evaluator. Se per compilare le espressioni si utilizzano le finestre di dialogo disponibili in Progettazione SSISSSIS , il carattere @ verrà aggiunto automaticamente al nome della variabile.If you build expressions by using the dialog boxes that SSISSSIS Designer provides, the @ character is automatically added to the variable name. Non è consentito includere spazi tra il carattere @ e il nome della variabile.It is not valid to include spaces between the @ character and the variable name.

Per i nomi delle variabili valgono le stesse regole applicate agli altri identificatori regolari:Variable names follow the same rules as those for other regular identifiers:

  • Il primo carattere del nome deve essere una lettera, come definito dallo standard Unicode 2.0, o un carattere di sottolineatura ().The first character of the name must be a letter as defined by the Unicode Standard 2.0, or an underscore ().

  • I caratteri successivi possono includere lettere o numeri, come definito dallo standard Unicode 2.0, il carattere di sottolineatura () e i caratteri @, $ e #.Subsequent characters can be letters or numbers as defined in the Unicode Standard 2.0, the underscore (), @, $, and # characters.

    I nomi di variabile contenenti caratteri diversi da quelli elencati devono essere racchiusi tra parentesi quadre.If a variable name contains characters other than those listed, the variable must be enclosed in brackets. È ad esempio necessario racchiudere tra parentesi quadre i nomi di variabili che includono spazi.For example, variable names with spaces must be enclosed in brackets. La parentesi quadra di apertura viene inserita dopo il carattere @.The opening bracket follows the @ character. Per fare riferimento alla variabile My Name , ad esempio, è necessario specificare @[My Name].For example, the My Name variable is referenced as @[My Name]. Non è consentito includere spazi tra il nome della variabile e le parentesi quadre.It is not valid to include spaces between the variable name and the brackets.

Nota

I nomi delle variabili di sistema e delle variabili definite dall'utente devono essere specificati rispettando la distinzione tra maiuscole e minuscole.The names of user-defined and system variables are case-sensitive.

Nomi di variabile univociUnique Variable Names

Integration ServicesIntegration Services sono supportare le variabili personalizzate ed è disponibile un set di variabili di sistema. supports custom variables and provides a set of system variables. Per impostazione predefinita, le variabili personalizzate appartengono allo spazio dei nomi User mentre le variabili di sistema appartengono allo spazio dei nomi System .By default, custom variables belong to the User namespace, and system variables belong to the System namespace. È possibile creare ulteriori spazi dei nomi per le variabili personalizzate e aggiornare i nomi degli spazi dei nomi in base alle esigenze della propria applicazione.You can create additional namespaces for custom variables and update the namespace names to suit the needs of your application. Il generatore di espressioni elenca le variabili comprese nell'ambito corrente, a qualsiasi spazio dei nomi appartengano.The expression builder lists in-scope variables in all namespaces.

Tutte le variabili appartengono a uno spazio dei nomi e hanno un ambito,All variables have scope and belong to a namespace. che può essere costituito da un pacchetto oppure da un contenitore o da un'attività in un pacchetto.A variable has package scope or the scope of a container or task in the package. Il generatore di espressioni di Progettazione SSISSSIS elenca solo le variabili comprese nell'ambito corrente.The expression builder in SSISSSIS Designer lists only the in-scope variables. Per altre informazioni, vedere Variabili di Integration Services (SSIS) e Usare variabili nei pacchetti.For more information, see Integration Services (SSIS) Variables and Use Variables in Packages.

L'analizzatore di espressioni può valutare correttamente un'espressione solo se le variabili utilizzate hanno nomi univoci.Variables used in expressions must have unique names for the expression evaluator to evaluate the expression correctly. Se un pacchetto utilizza più variabili con lo stesso nome, i relativi spazi dei nomi devono essere diversi.If a package uses multiple variables with the same name, their namespaces must be different. Integration ServicesIntegration Services include un operatore di risoluzione degli spazi dei nomi composto da un doppio segno di due punti (::), per qualificare una variabile con il relativo spazio dei nomi. provides a namespace resolution operator, consisting of two colons (::), for qualifying a variable with its namespace. Nell'espressione seguente, ad esempio, vengono usate due variabili con il nome Count, una appartenente allo spazio dei nomi User e l'altra allo spazio dei nomi MyNamespace .For example, the following expression uses two variables named Count; one belongs to the User namespace and one to the MyNamespace namespace.

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

Per consentire all'analizzatore di espressioni di riconoscere tali variabili, è necessario racchiudere tra parentesi quadre la combinazione costituita dallo spazio dei nomi e dal nome qualificato della variabile.You must enclose the combination of namespace and qualified variable name in brackets for the expression evaluator to recognize the variable.

Se il valore della variabile Count dello spazio dei nomi User è 10, mentre il valore di Count in MyNamespace è 2, l'espressione restituirà true , perché l'analizzatore di espressioni le riconosce come due variabili diverse.If the value of Count in the User namespace is 10 and the value of Count in MyNamespace is 2, the expression evaluates to true because the expression evaluator recognizes two different variables.

Se i nomi delle variabili non sono univoci, non verrà generato alcun errore,If variable names are not unique, no error occurs. ma l'analizzatore di espressioni valuterà l'espressione utilizzando una sola istanza della variabile e restituirà un risultato non corretto.Instead, the expression evaluator uses only one instance of the variable to evaluate the expression and returns an incorrect result. L'espressione seguente ha ad esempio lo scopo di confrontare i valori (10 e 2) di due variabili Count diverse, ma viene restituito false perché nell'analizzatore di espressioni viene usata due volte la stessa istanza della variabile Count .For example, the following expression was intended to compare the values (10 and 2) for two separate Count variables but the expression evaluates to false because the expression evaluator uses the same instance of the Count variable two times.

@Count > @Count  

Articolo tecnico relativo al foglio d'aiuto per le espressioni SSISsul sito Web pragmaticworks.comTechnical article, SSIS Expression Cheat Sheet, on pragmaticworks.com