Bezeichner (SSIS)
In Ausdrücken sind Bezeichner Spalten und Variablen, die für den Vorgang verfügbar sind. Reguläre und qualifizierte Bezeichner können in Ausdrücken verwendet werden. Ein regulärer Bezeichner erfordert keine zusätzlichen Qualifizierer. Ein regulärer Bezeichner ist z. B. MiddleName, eine Spalte in der Person-Tabelle der AdventureWorks2008R2-Datenbank. Ein qualifizierter Bezeichner wird durch eckige Klammern getrennt. Für einen Bezeichner kann ein Trennzeichen erforderlich sein, weil der Name des Bezeichners Leerzeichen einschließt oder weil das erste Zeichen des Bezeichnernamens kein Buchstabe oder ein Unterstrich ist. Beispielsweise muss der Spaltenname Middle Name mit eckigen Klammern qualifiziert und in einem Ausdruck als [Middle Name] eingegeben werden.
Ein Paket kann Datenquellen einschließen, die Spalten mit demselben Namen verfügbar machen. Um die Mehrdeutigkeit von Spalten zu vermeiden, unterstützt die Ausdrucksauswertung die punktierte Schreibweise, bei der der Spaltenname mit dem Quellennamen qualifiziert wird. Wenn der Quellenname beispielsweise GetGeographyData lautet und der Spaltenname GeographyKey, kann auf die Spalte mithilfe von GetGeographyData.GeographyKey verwiesen werden.
Ein Paket kann mehrere gleichnamige Variablen aufweisen, vorausgesetzt sie gehören zu unterschiedlichen Namespaces. Die Ausdrucksauswertung stellt einen Namespaceauflösungsoperator bereit, mit dem Variablen nach dem Namespace identifiziert werden können. Weitere Informationen finden Sie unter Syntax (SSIS).
Reguläre Bezeichner
Die Namen von regulären Bezeichnern müssen den folgenden Regeln entsprechen:
Das erste Zeichen des Namens muss ein Buchstabe gemäß Unicode-Standard 2.0 oder ein Unterstrich (_) sein.
Nachfolgende Zeichen können Buchstaben oder Zahlen gemäß Unicode-Standard 2.0, ein Unterstrich (_) oder die Zeichen @, $ und # sein.
Wichtig |
---|
Nur die aufgeführten eingebetteten Zeichen und Sonderzeichen sind in regulären Bezeichnern gültig. Für die Verwendung von Leerzeichen und Sonderzeichen müssen Sie anstelle eines regulären Bezeichners einen qualifizierten Bezeichner verwenden. |
Qualifizierte Bezeichner
Wenn der Name des Bezeichners Leerzeichen einschließt oder wenn der Name kein gültiger Name für einen regulären Bezeichner ist, muss der Bezeichner qualifiziert werden. Die Ausdrucksauswertung verwendet öffnende und schließende eckige Klammern ([]), um Bezeichner zu qualifizieren. Die eckigen Klammern befinden sich an der ersten und letzten Position der Zeichenfolge. Beispielsweise wird der Bezeichner 5$> zu [5$>]. Eckige Klammern können für Spaltennamen, Variablennamen und Funktionsnamen verwendet werden.
Falls Sie Ausdrücke mithilfe der Dialogfelder des SSIS-Designers erstellen, werden reguläre Bezeichner automatisch in eckige Klammern eingeschlossen. Eckige Klammern sind jedoch nur erforderlich, wenn der Name ungültige Zeichen enthält. Beispielsweise ist die Spalte mit dem Namen MiddleName ohne eckige Klammern gültig.
In Ausdrücken kann nicht auf Spaltennamen verwiesen werden, die eckige Klammern einschließen. Beispielsweise kann der Spaltenname Column[1] nicht in einem Ausdruck verwendet werden. Der Spaltenname müsste ansonsten in einen Ausdruck ohne eckige Klammern umbenannt werden.
Herkunftsbezeichner
In Ausdrücken kann mit Herkunftsbezeichnern auf Spalten verwiesen werden. Die Herkunftsbezeichner werden automatisch zugewiesen, wenn Sie das Paket erstellen. Den Herkunftsbezeichner für eine Spalte können Sie im SSIS-Designer im Dialogfeld Erweiterter Editor auf der Registerkarte Spalteneigenschaften anzeigen.
Wenn Sie mithilfe des Herkunftsbezeichners auf eine Spalte verweisen, muss der Bezeichner das Nummernzeichenpräfix (#) einschließen. Beispielsweise muss eine Spalte mit dem Herkunftsbezeichner 147 als #147 dargestellt werden.
Falls ein Ausdruck erfolgreich analysiert wird, ersetzt die Ausdrucksauswertung den Herkunftsbezeichner durch Spaltennamen im Dialogfeld.
Eindeutige Spaltennamen
Mehrere in einem Paket verwendete Komponenten können Spalten mit demselben Namen verfügbar machen. Falls diese Spalten in Ausdrücken verwendet werden, muss sichergestellt werden, dass sie nicht mehrdeutig sind, damit die Ausdrücke erfolgreich analysiert werden können. Die Ausdrucksauswertung unterstützt die punktierte Schreibweise zum Identifizieren der Spaltenquelle. Beispielsweise werden zwei Spalten mit dem Namen Age zu FlatFileSource.Age und OLEDBSource.Age,. Daran ist erkennbar, dass es sich bei der Quelle um FlatFileSource oder OLEDBSource handelt. Der Parser behandelt den vollqualifizierten Namen als einen einzelnen Spaltennamen.
Die Namen von Spaltenkomponenten und Spalten werden separat qualifiziert. Die folgenden Beispiele veranschaulichen die gültige Verwendung von eckigen Klammern in einer gepunkteten Schreibweise:
Der Name der Quellkomponente schließt Leerzeichen ein.
[MySo urce].Age
Das erste Zeichen im Spaltennamen ist ungültig.
MySource.[#Age]
Die Namen der Quellkomponente und der Spalte enthalten ungültige Zeichen.
[MySource?].[#Age]
Wichtig |
---|
Falls beide Elemente in gepunkteter Schreibweise in eckige Klammern eingeschlossen sind, interpretiert die Ausdrucksauswertung das Klammernpaar als einen einzelnen Bezeichner, und nicht als eine Kombination aus Quelle und Spalte. |
Variablen in Ausdrücken
Wenn in Ausdrücken auf Variablen verwiesen wird, muss das @-Präfix verwendet werden. Beispielsweise wird auf die Counter-Variable mit @Counter verwiesen. Das @-Zeichen ist nicht Bestandteil des Variablennamens, sondern identifiziert die Variable nur gegenüber der Ausdrucksauswertung. Wenn Sie Ausdrücke mithilfe der Dialogfelder des SSIS-Designers erstellen, wird dem Variablennamen automatisch das @-Zeichen hinzugefügt. Leerzeichen sind zwischen dem @-Zeichen und dem Variablennamen nicht zulässig.
Für Variablennamen gelten dieselben Regeln wie für andere reguläre Bezeichner:
Das erste Zeichen des Namens muss ein Buchstabe gemäß Unicode-Standard 2.0 sein oder ein Unterstrich (_).
Nachfolgende Zeichen können Buchstaben oder Zahlen gemäß Unicode-Standard 2.0, ein Unterstrich (_) oder die Zeichen @, $ und # sein.
Enthält ein Variablenname andere als die aufgeführten Zeichen, muss die Variable in eckige Klammern eingeschlossen werden. Beispielsweise müssen Variablennamen mit Leerzeichen in eckige Klammern eingeschlossen werden. Die öffnende eckige Klammer folgt auf das @-Zeichen. Beispielsweise wird auf die My Name-Variable mit @[My Name] verwiesen. Leerzeichen sind zwischen dem Variablennamen und den eckigen Klammern nicht zulässig.
Hinweis |
---|
Die Namen von benutzerdefinierten und Systemvariablen unterscheiden nach Groß-/Kleinschreibung. |
Eindeutige Variablennamen
Integration Services unterstützt benutzerdefinierte Variablen und stellt eine Reihe von Systemvariablen bereit. Standardmäßig gehören benutzerdefinierte Variablen zum User-Namespace und Systemvariablen zum System-Namespace. Sie können zusätzliche Namespaces für benutzerdefinierte Variablen erstellen und die Namespacenamen entsprechend den Anforderungen Ihrer Anwendung aktualisieren. Im Ausdrucks-Generator werden bereichsinterne Variablen in allen Namespaces aufgeführt.
Alle Variablen weisen einen Bereich auf und gehören zu einem Namespace. Eine Variable weist einen Paketbereich oder den Bereich eines Containers oder Tasks im Paket auf. Im Ausdrucks-Generator des SSIS-Designers werden nur die bereichsinternen Variablen aufgeführt. Weitere Informationen finden Sie unter SQL Server Integration Services-Variablen und Verwenden von Variablen in Paketen.
Für Variablen, die in Ausdrücken verwendet werden, sind eindeutige Namen erforderlich, damit die Ausdrucksauswertung den Ausdruck ordnungsgemäß auswertet. Falls ein Paket mehrere gleichnamige Variablen verwendet, müssen deren Namespaces unterschiedlich sein. Integration Services stellt einen Namespaceauflösungsoperator bereit, bestehend aus zwei Doppelpunkten (::), um eine Variable mit ihrem Namespace zu qualifizieren. Beispielsweise verwenden die folgenden Ausdrücke zwei Variablen mit dem Namen Count. Eine Variable gehört zum User-Namespace und die andere zum MyNamespace-Namespace.
@[User::Count] > @[MyNamespace::Count]
Wichtig |
---|
Sie müssen die Kombination aus Namespace und qualifiziertem Variablennamen in eckige Klammern einschließen, damit die Ausdrucksauswertung die Variable erkennt. |
Falls der Wert von Count im User-Namespace gleich 10 und der Wert von Count in MyNamespace gleich 2 ist, wird der Ausdruck als true ausgewertet, weil die Ausdrucksauswertung zwei unterschiedliche Variablen erkennt.
Wenn Variablennamen nicht eindeutig sind, wird kein Fehler gemeldet. Die Ausdrucksauswertung verwendet stattdessen nur eine Instanz der Variablen zum Auswerten des Ausdrucks und gibt ein falsches Ergebnis zurück. Beispielsweise war der folgende Ausdruck für den Vergleich der Werte (10 und 2) zweier separater Count-Variablen vorgesehen. Der Ausdruck wird jedoch als false ausgewertet, da die Ausdrucksauswertung dieselbe Instanz der Count-Variablen zweimal verwendet.
@Count > @Count