Verwenden von Eigenschaftsausdrücken in Paketen

 

Betrifft: SQL Server 2016

Ein Eigenschaftsausdruck ist ein einer Eigenschaft zugewiesener Ausdruck, um das dynamische Aktualisieren der Eigenschaft zur Laufzeit zu ermöglichen. So kann ein Eigenschaftsausdruck z. B. die An-Zeile aktualisieren, die ein Task des Typs "Mail senden" verwendet, indem eine in einer Variablen gespeicherte E-Mail-Adresse eingefügt wird.

Ein Ausdruck kann einem Paket, einem Task, einer Foreach-Schleife, einer For-Schleife, einer Sequenz, einem Foreach-Enumerator, einem Ereignishandler, einer Paket- oder Projektebene, einem Verbindungs-Manager oder einem Protokollanbieter hinzugefügt werden. Jede beliebige Eigenschaft dieser Objekte vom Typ Lesen/Schreiben kann einen Eigenschaftsausdruck implementieren. Integration Services unterstützt auch die Verwendung von Eigenschaftsausdrücken in einigen benutzerdefinierten Eigenschaften von Datenflusskomponenten. Variablen und Rangfolgeneinschränkungen unterstützen keine Eigenschaftsausdrücke. Sie enthalten jedoch spezielle Eigenschaften, in denen Sie Ausdrücke verwenden können.

Eigenschaftsausdrücke können auf verschiedene Weise aktualisiert werden:

  • Benutzerdefinierte Variablen können in Paketkonfigurationen eingeschlossen und dann aktualisiert werden, wenn das Paket bereitgestellt wird. Zur Laufzeit wird der Eigenschaftsausdruck anhand des aktualisierten Variablenwertes ausgewertet.

  • Systemvariablen, die in Ausdrücken eingeschlossen sind, werden zur Laufzeit aktualisiert, was die Ergebnisse der Eigenschaftsauswertung verändert.

  • Datums- und Zeitfunktionen werden zur Laufzeit ausgewertet und stellen die aktualisierten Werte für Eigenschaftsausdrücke bereit.

  • Variablen in Ausdrücken können durch die Skripts aktualisiert werden, die vom Skripttask und der Skriptkomponente ausgeführt werden.

Die Ausdrücke werden mithilfe der Microsoft Integration Services -Ausdruckssprache erstellt. Die Ausdrücke können Systemvariablen oder benutzerdefinierte Variablen verwenden sowie die Operatoren, Funktionen und Typumwandlungen, die von der Ausdruckssprache bereitgestellt werden.

System_CAPS_ICON_note.jpg Hinweis


Die Namen von benutzerdefinierten und Systemvariablen unterscheiden nach Groß-/Kleinschreibung.

Weitere Informationen finden Sie unter Integration Services & #40; SSIS- & #41; Ausdrücke.

Ein wichtiger Verwendungszweck von Eigenschaftsausdrücken ist das Anpassen von Konfigurationen für jede bereitgestellte Instanz eines Pakets. Damit wird es möglich, Paketeigenschaften dynamisch für unterschiedliche Umgebungen zu aktualisieren. So können Sie z. B. einen Eigenschaftsausdruck erstellen, der eine Variable zur Verbindungszeichenfolge eines Verbindungs-Managers hinzufügt, und dann die Variable aktualisieren, wenn das Paket bereitgestellt wird. Damit wird sichergestellt, dass die Verbindungszeichenfolge zur Laufzeit richtig ist. Paketkonfigurationen werden geladen, bevor die Eigenschaftsausdrücke ausgewertet werden.

Eine Eigenschaft kann jeweils nur einen Eigenschaftsausdruck verwenden, und ein Eigenschaftsausdruck kann nur für eine einzige Eigenschaft angewendet werden. Allerdings können Sie mehrere identische Eigenschaftsausdrücke erstellen und diese unterschiedlichen Eigenschaften zuordnen.

Einige Eigenschaften werden mithilfe von Enumeratorwerten festgelegt. Wenn Sie in einem Eigenschaftsausdruck auf das Enumeratorelement verweisen, müssen Sie den numerischen Wert verwenden, der dem Anzeigenamen des Enumeratorelements entspricht. Wenn beispielsweise ein Eigenschaftsausdruck die LoggingMode -Eigenschaft festlegt, die einen Wert der DTSLoggingMode -Enumeration verwendet, muss der Eigenschaftsausdruck anstelle der Anzeigenamen Enabled, Disabledoder UseParentSettinggleich 0, 1 oder 2 sein. Weitere Informationen finden Sie unter aufgelisteten Konstanten in Eigenschaftsausdrücken.

Integration Services stellt eine Reihe von Tools zum Erstellen und Verwalten von Eigenschaftsausdrücken bereit.

  • Die Ausdrücke -Seite, die sich in den benutzerdefinierten Editoren für Tasks befindet, den For-Schleifen-Container und die Foreach-Container. Mit der Ausdrücke -Seite können Sie Ausdrücke bearbeiten und eine Liste der Eigenschaftsausdrücke anzeigen, die ein Task, eine Foreach-Schleife oder eine For-Schleife verwendet.

  • Das Eigenschaften -Fenster zum Bearbeiten von Ausdrücken und zum Anzeigen einer Liste der Eigenschaftsausdrücke, die von einem Paket oder von Paketobjekten verwendet werden.

  • Das Eigenschaftsausdrucks-Editor -Dialogfeld zum Erstellen, Aktualisieren und Löschen von Eigenschaftsausdrücken.

  • Das Ausdrucks-Generator -Dialogfeld zum Erstellen eines Ausdrucks mithilfe der grafischen Tools. Das Ausdrucks-Generator -Dialogfeld kann Ausdrücke zur Überprüfung durch Sie auswerten, ohne dass das Auswertungsergebnis zur Eigenschaft zugeordnet wird.

Im folgenden Diagramm werden die Benutzeroberflächen angezeigt, die Sie verwenden, um Eigenschaftsausdrücke hinzuzufügen, zu ändern oder zu entfernen.

Die Benutzeroberfläche für Eigenschaftsausdrücke

In der Eigenschaften Fenster und die Ausdrücke Seite, klicken Sie auf die Schaltfläche zum Durchsuchen (...) an die Ausdrücke Ebene zu öffnen der Eigenschaftsausdrucks-Editor (Dialogfeld). Der Eigenschaftsausdruck-Editor ermöglicht das Zuordnen einer Eigenschaft zu einem Ausdruck und das Eingeben eines Eigenschaftsausdrucks. Wenn Sie die grafischen ausdruckstools zum Erstellen und überprüfen Sie anschließend den Ausdruck verwenden möchten, klicken Sie auf die Schaltfläche zum Durchsuchen (...) Ebene der Ausdruck zum Öffnen der Ausdrucks-Generator Dialogfeld, und klicken Sie dann erstellen oder ändern und optional Überprüfen des Ausdrucks.

Sie können das Ausdrucks-Generator -Dialogfeld auch aus dem Eigenschaftsausdrucks-Editor -Dialogfeld heraus öffnen.

So arbeiten Sie mit Eigenschaftsausdrücken

Festlegen von Eigenschaftsausdrücken von Datenflusskomponenten

Wenn Sie in SQL Server Data Tools (SSDT)ein Paket erstellen, werden die Eigenschaften von Datenflusskomponenten, die Eigenschaftsausdrücke unterstützen, im zugehörigen Datenflusstask verfügbar gemacht. Zum Hinzufügen, ändern und Entfernen von Eigenschaftsausdrücken von Datenflusskomponenten, klicken Sie auf den Datenflusstask des Datenflusses, zu dem die Datenflusskomponenten gehören, und klicken Sie auf Eigenschaften. Das Eigenschaftenfenster listet die Eigenschaften von Datenflusskomponenten auf, mit denen Eigenschaftsausdrücke verwendet werden können. Z. B. zum Erstellen oder Ändern eines Eigenschaftsausdrucks für die SamplingValue-Eigenschaft von einer Transformation für Zeilenstichprobe in einem Datenfluss mit der Bezeichnung SampleCustomer, Maustaste auf den Datenflusstask des Datenflusses, zu dem die Transformation für Zeilenstichprobe gehört, und klicken Sie auf Eigenschaften. Die SamplingValue-Eigenschaft im Eigenschaftenfenster aufgelistet ist, und weist das Format [SampleCustomer]. [Samplingvalue] vor.

Das Hinzufügen, Ändern und Entfernen von Eigenschaftsausdrücken für Datenflusskomponenten erfolgt im Eigenschaftenfenster auf dieselbe Weise wie für Eigenschaftsausdrücke anderer Integration Services -Objekttypen. Das Eigenschaftenfenster stellt auch den Zugriff auf die verschiedenen Dialogfelder und Ausdrucks-Generatoren bereit, die Sie verwenden können, um Eigenschaftsausdrücke von Datenflusskomponenten hinzuzufügen, zu ändern oder zu entfernen. Weitere Informationen zu den Eigenschaften von Datenflusskomponenten, die mithilfe von Eigenschaftsausdrücken aktualisiert werden können, finden Sie unter Transformation Custom Properties.

Angaben und Steuerungen sind beim Laden von Eigenschaftsausdrücken nicht möglich. Die Eigenschaftsausdrücke werden beim Überprüfen des Pakets und der Paketobjekte ausgewertet und geladen. Die Überprüfung erfolgt beim Speichern des Pakets, beim Öffnen des Pakets im SSIS -Designer und beim Ausführen des Pakets.

Sie können daher die aktualisierten Werte der Paketobjekteigenschaften, die die Eigenschaftsausdrücke des SSIS -Designers verwenden, erst anzeigen, wenn Sie das Paket speichern, das Paket ausführen oder das Paket nach dem Hinzufügen der Eigenschaftsausdrücke erneut öffnen.

Die Eigenschaftsausdrücke, die anderen Objekttypen zugeordnet sind, wie z. B. Verbindungs-Manager, Protokollanbieter und Enumeratoren, werden ebenfalls geladen, wenn spezifische Methoden des jeweiligen Objekttyps aufgerufen werden. Beispielsweise werden die Eigenschaften der Verbindungs-Manager geladen, bevor in Integration Services eine Instanz der Verbindung erstellt wird.

Eigenschaftsausdrücke werden nach dem Laden der Paketkonfigurationen geladen. Beispielsweise werden Variablen zuerst durch ihre Konfigurationen aktualisiert, und anschließend werden die Eigenschaftsausdrücke, die die Variablen verwenden, ausgewertet und geladen. Das bedeutet, dass die Eigenschaftsausdrücke immer die Werte der Variablen verwenden, die durch Konfigurationen festgelegt wurden.

System_CAPS_ICON_note.jpg Hinweis


Können keine der festgelegt Möglichkeit, die Dtexec -Hilfsprogramm einen Eigenschaftsausdruck aufzufüllen.

In der folgenden Tabelle finden Sie eine Auflistung von Situationen, in denen Eigenschaftsausdrücke von Integration Services ausgewertet und geladen werden.

ObjekttypLaden und Auswerten
Paket, Foreach-Schleife, For-Schleife, Sequenz, Tasks und DatenflusskomponentenNach dem Laden von Konfigurationen

Vor der Prüfung

Vor der Ausführung
Verbindungs-ManagerNach dem Laden von Konfigurationen

Vor der Prüfung

Vor der Ausführung

Vor dem Erstellen einer Verbindungsinstanz
ProtokollanbieterNach dem Laden von Konfigurationen

Vor der Prüfung

Vor der Ausführung

Vor dem Öffnen von Protokollen
Foreach-EnumeratorenNach dem Laden von Konfigurationen

Vor der Prüfung

Vor der Ausführung

Vor jeder Enumeration der Schleife

Es ist häufig nützlich, einen Eigenschaftsausdruck zu implementieren, um den Wert der ConnectionString -Eigenschaft von Verbindungs-Managern festzulegen, die im Foreach-Schleifencontainer verwendet werden. Wenn der Enumerator bei jeder Iteration der Schleife seinen aktuellen Wert einer Variablen zuordnet, kann der Eigenschaftsausdruck den Wert dieser Variablen zum dynamischen Aktualisieren des Wertes der ConnectionString -Eigenschaft verwenden.

Wenn Sie Eigenschaftsausdrücke zusammen mit der ConnectionString -Eigenschaft von Dateiverbindungs-Managern oder von Verbindungs-Managern für mehrere Dateien, für Flatfiles oder für mehrere Flatfiles verwenden möchten, der in einer Foreach-Schleife verwendet wird, sind einige Faktoren zu beachten. Ein Paket kann so konfiguriert werden, dass mehrere ausführbare Dateien gleichzeitig ausgeführt werden durch Festlegen der MaxConcurrentExecutables -Eigenschaft auf einen Wert größer als 1 bzw. auf den Wert 1. Der Wert -1 lässt die maximale Anzahl gleichzeitig ausführbarer Dateien zu, die der Anzahl der Prozessoren plus zwei entspricht. Der Wert der MaxConcurrentExecutables -Eigenschaft sollte auf 1 festgelegt werden, um negative Auswirkungen einer parallelen Ausführung von ausführbaren Dateien zu vermeiden. Wenn die MaxConcurrentExecutables -Eigenschaft nicht auf 1 festgelegt ist, kann der Wert der ConnectionString -Eigenschaft nicht sichergestellt werden, und die Ergebnisse sind unvorhersehbar.

Stellen Sie sich z. B. eine Foreach-Schleife vor, die die im Ordner enthaltenen Dateien aufzählt, die Dateinamen abruft und anschließend einen Task 'SQL ausführen' verwendet, um die Dateinamen in eine Tabelle einzufügen. Wenn die MaxConcurrentExecutables -Eigenschaft nicht auf 1 festgelegt ist, können Schreibkonflikte auftreten, wenn zwei Instanzen des Tasks "SQL ausführen" versuchen, gleichzeitig in die Tabelle zu schreiben.

Die folgenden Beispielausdrücke veranschaulichen das Verwenden von Systemvariablen, Operatoren, Funktionen und Zeichenfolgenliteralen in Eigenschaftsausdrücken.

Eigenschaftsausdruck für die LoggingMode-Eigenschaft eines Pakets

Der folgende Eigenschaftsausdruck kann verwendet werden, um die LoggingMode-Eigenschaft eines Pakets festzulegen. Der Ausdruck verwendet die DAY- und GETDATE-Funktionen, um eine Ganzzahl abzurufen, die den datepart-Wert für den Tag eines Datums darstellt. Handelt es sich dabei um den 1. oder 15. Tag des Monats, ist die Protokollierung aktiviert. Andernfalls ist die Protokollierung deaktiviert. Der Wert 1 ist das Äquivalent des enumeratorelements LoggingMode aktiviert, und der Wert 2 ist die ganze Zahl des Elements entspricht deaktiviert. Sie müssen im Ausdruck den numerischen Wert anstelle des Enumeratorelementnamens verwenden.

DAY((DT_DBTIMESTAMP)GETDATE())==1||DAY((DT_DBTIMESTAMP)GETDATE())==15?1:2

Eigenschaftsausdruck für den Betreff einer E-Mail-Nachricht

Der folgende Eigenschaftsausdruck kann verwendet werden, Subject-Eigenschaft des Tasks Mail senden und ein sinnvolles e-Mail-Betreff bereitzustellen. Der Ausdruck verwendet eine Kombination aus Zeichenfolgenliteralen, Systemvariablen, Verkettungs- (+) und Umwandlungsoperatoren sowie aus den DATEDIFF- und GETDATE-Funktionen. Die Systemvariablen sind die Variablen PackageName und StartTime .

"PExpression-->Package: (" + @[System::PackageName] + ") Started:"+ (DT_WSTR, 30) @[System::StartTime] + " Duration:" + (DT_WSTR,10) (DATEDIFF( "ss", @[System::StartTime] , GETDATE() )) + " seconds"

Wenn der Paketname EmailRowCountPP ist, es am 4. März 2005 (3/4/2005) ausgeführt wurde und die Dauer der Ausführung 9 Sekunden betrug, wird der Ausdruck in Form der folgenden Zeichenfolge ausgewertet:

PExpression-->Package: (EmailRowCountPP) Started:3/4/2005 11:06:18 AM Duration:9 seconds.

Eigenschaftsausdruck für die Nachricht einer E-Mail-Nachricht

Der folgende Eigenschaftsausdruck kann verwendet werden, die MessageSource-Eigenschaft des Tasks Mail senden festgelegt. Der Ausdruck verwendet eine Kombination aus Zeichenfolgenliteralen, benutzerdefinierten Variablen und dem Verkettungsoperator (+). Die benutzerdefinierten Variablen tragen die Namen nasdaqrawrows, nyserawrows und amexrawrows. Die Zeichenfolge "\n" steht für einen Wagenrücklauf.

"Rows Processed: " + "\n" +" NASDAQ: " + (dt_wstr,9)@[nasdaqrawrows] + "\n" + " NYSE: " + (dt_wstr,9)@[nyserawrows] + "\n" + " Amex: " + (dt_wstr,9)@[amexrawrows]

Wenn nasdaqrawrows den Wert 7058 aufweist, nyserawrows den Wert 3528 und amexrawrows den Wert 1102, wird der Ausdruck in Form der folgenden Zeichenfolge ausgewertet:

Verarbeitete Zeilen:

NASDAQ: 7058

NYSE: 3528

AMEX: 1102

Eigenschaftsausdruck für die Executable-Eigenschaft eines Tasks vom Typ "Prozess ausführen"

Der folgende Eigenschaftsausdruck kann verwendet werden, auf die ausführbare Datei einen Task Prozess ausführen-Eigenschaft festgelegt. Der Ausdruck verwendet eine Kombination aus Zeichenfolgenliteralen, Operatoren und Funktionen. Der Ausdruck verwendet die Funktionen DATEPART und GETDATE sowie den Bedingungsoperator.

DATEPART("weekday", GETDATE()) ==2?"notepad.exe":"mspaint.exe"

Handelt es sich um den zweiten Tag der Woche, führt der Task Prozess ausführen Notepad.exe, ansonsten Mspaint.exe aus.

Eigenschaftsausdruck für die ConnectionString-Eigenschaft eines Verbindungs-Managers für Flatfiles

Der folgende Eigenschaftsausdruck kann verwendet werden, die ConnectionString-Eigenschaft, der einen Flatfile-Verbindungs-Manager festgelegt. Der Ausdruck verwendet eine einzige benutzerdefinierte Variable, myfilenamefull, die den Pfad zu einer Textdatei enthält.

@[User::myfilenamefull]

System_CAPS_ICON_note.jpg Hinweis


Der Zugriff auf Eigenschaftsausdrücke für Verbindungs-Manager ist nur mithilfe des Eigenschaften-Fensters möglich. Zum Anzeigen der Eigenschaften für einen Verbindungs-Manager müssen Sie den Verbindungs-Manager im Auswählen der Verbindungs-Manager Bereich SSIS Designer, wenn das Eigenschaftenfenster zu öffnen, oder mit der rechten Maustaste des Verbindungs-Managers und wählen Sie Eigenschaften.

Eigenschaftsausdruck für die ConfigString-Eigenschaft eines Protokollanbieters für Textdateien

Der folgende Eigenschaftsausdruck kann verwendet werden, die ConfigString-Eigenschaft einer Textdatei-Protokollanbieter festlegen. Der Ausdruck verwendet eine einzelne benutzerdefinierte Variable, varConfigString, die den Namen des zu verwendenden Dateiverbindungs-Managers enthält. Der Dateiverbindungs-Manager gibt den Pfad der Textdatei an, in den Protokolleinträge geschrieben werden.

@[User::varConfigString]

System_CAPS_ICON_note.jpg Hinweis


Der Zugriff auf Eigenschaftsausdrücke für Protokollanbieter ist nur über das Eigenschaftenfenster möglich. Um die Eigenschaften eines Protokollanbieters anzuzeigen, müssen Sie den Protokollanbieter auswählen, auf die Paket-Explorer auf der Registerkarte SSIS Designer, wenn das Eigenschaftenfenster zu öffnen, oder mit der rechten Maustaste in des Protokollanbieters im Paket-Explorer, und klicken Sie auf Eigenschaften.

Verwenden von Variablen in Paketen

Community-Beiträge

HINZUFÜGEN
Anzeigen: