Schreiben von Informationen in das Anwendungsprotokoll
Sie können einen Skripttask in das SSIS-Paket (Microsoft SQL Server Integration Services) einschließen, um einen Task auszuführen. Der Task kann beispielsweise eine Sammlung von Variableninformationen in das Windows-Anwendungsprotokoll schreiben. Sie können ein SSIS-Paket erstellen, das einen Datenflusstask enthält. Dieser Datenflusstask enthält eine Zeilenanzahltransformation. Sie können einen Skripttask verwenden, um die Daten, die durch die Zeilenanzahltransformation aufgefüllt wurden, in das Windows-Anwendungsprotokoll zu schreiben.
In diesem Artikel wird beschrieben, wie Sie mithilfe eines Skripttasks Informationen in das Windows-Anwendungsprotokoll schreiben.
Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 906560
BESCHREIBUNG
In diesem Beispiel wird davon ausgegangen, dass Sie die folgenden Elemente im SSIS-Paket erstellt haben:
- Einen Datenflusstask.
- Einen Skripttask.
- Einen Connector vom Datenflusstask zum Skripttask.
- Im Datenflusstask haben Sie eine Zeilenanzahltransformation im Datenfluss erstellt.
Wenn Sie das Paket ausführen, gibt die Zeilenanzahltransformation die Zeilenanzahldaten zurück, die Sie in das Windows-Anwendungsprotokoll schreiben möchten.
Konfigurieren des Skripttasks
Führen Sie zum Konfigurieren des Skripttaskcode-Beispiels die folgenden Schritte im SSIS-Designer aus:
Wenn die Registerkarte Ablaufsteuerung aktiv ist, klicken Sie mit der rechten Maustaste auf die Entwurfsoberfläche, und wählen Sie dann Variablen aus. Das Fenster Variablen wird im linken Fensterbereich angezeigt.
Wählen Sie im Fenster Variablen die Option Variable hinzufügen aus, und geben Sie dann mycount als Variablennamen an. Standardmäßig ist
Int32
der Datentyp der neuen mycount-Variablen.Hinweis
Bei Verweisen auf Variablennamen wird nach Groß-/Kleinschreibung unterschieden.
Doppelklicken Sie auf den Datenflusstask. Die Registerkarte Datenfluss wird zum aktiven Fenster.
Verwenden Sie die Eigenschaften der Zeilenanzahltransformation, um den Wert der Eigenschaft VariableName auf mycount festzulegen.
Wählen Sie die Registerkarte Ablaufsteuerung aus, und doppelklicken Sie dann auf den Skripttask. Das Dialogfeld Skripttask-Editor wird angezeigt.
Wählen Sie im linken Bereich das Element Skript aus, und ändern Sie dann den Wert der Eigenschaft ReadOnlyVariables in den folgenden Wert:
PackageName,StartTime,ExecutionInstanceGUID,mycount
Hinweis
Die Elemente PackageName, StartTime und ExecutionInstanceGUID sind Systemvariablen. Diese Systemvariablen werden verwendet, um die Paketinformationen in das Windows-Anwendungsprotokoll zu schreiben.
Wählen Sie im Dialogfeld Skripttask-Editordie Option Skript bearbeiten aus.
Wenn ein neues Fenster von Microsoft Visual Studio for Applications (VSTA) angezeigt wird, führen Sie die folgenden Schritte aus:
Stellen Sie sicher, dass die folgenden Namespaces vor allen anderen Deklarationen im Code enthalten sind.
Imports System Imports System.Data Imports System.Math Imports System.Diagnostics Imports Microsoft.SqlServer.Dts.Runtime
Ersetzen Sie das folgende Codebeispiel durch den Code in der
Main()
-Methode.Dim varMyCount As Variable = Dts.Variables("mycount") ' Dim varPackageName As Variable = Dts.Variables("PackageName") Dim varStartTime As Variable = Dts.Variables("StartTime") Dim varInstanceID As Variable = Dts.Variables("ExecutionInstanceGUID") Dim PackageDuration As Long '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ' Event log needs '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Dim sSource As String Dim sLog As String Dim sEventMessage As String Dim sMachine As String '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> PackageDuration = DateDiff("s", varStartTime.Value, Now()) sSource = "RowCountReporting from SSIS" ' We need the message posted to the Application event log. sLog = "Application" sEventMessage = "Rows Processed: " & Chr(10) _ & " case Rows:" + varMyCount.Value().ToString + Chr(10) _ & "=============================================" & Chr(10) _ & "The Package: " + varPackageName.Value().ToString _ & Chr(10) _ & "Started: " & varStartTime.Value().ToString _ & Chr(10) _ & "Current Time:" & System.DateTime.Now _ & Chr(10) _ & "=============================================" _ & Chr(10) _ & "Package Run Duration in seconds: " & PackageDuration _ & Chr(10) _ & "Execution GUID: " & varInstanceID.Value().ToString sMachine = "." If Not EventLog.SourceExists(sSource, sMachine) Then EventLog.CreateEventSource(sSource, slog) End If Dim ELog As New EventLog(sLog, sMachine, sSource) Dim category As Short = 2 ' ELog.WriteEntry("Write from third source", 4, 777, 2) ELog.WriteEntry(sEventMessage, EventLogEntryType.Information, 777, category) '############################### Dts.TaskResult = ScriptResults.Success
Nachdem das Paket erfolgreich ausgeführt wurde, wird der folgende Eintrag im Windows-Anwendungsprotokoll angezeigt.
Log Name: Application Source: RowCountReporting from SSIS Date: 12/20/2022 11:21:38 AM Event ID: 777 Task Category: (2) Level: Information Keywords: Classic User: N/A Computer: <hostname> Description: Rows Processed: case Rows:0 ============================================= The Package: Package Started: 12/20/2022 11:21:37 AM Current Time:12/20/2022 11:21:38 AM ============================================= Package Run Duration in seconds: 1 Execution GUID: {9DF22831-E608-47F7-BD62-F9BD3C2F9C77} Event Xml: <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="RowCountReporting from SSIS" /> <EventID Qualifiers="0">777</EventID> <Version>0</Version> <Level>4</Level> <Task>2</Task> <Opcode>0</Opcode> <Keywords>0x80000000000000</Keywords> <TimeCreated SystemTime="2022-12-20T17:21:38.5070621Z" /> <EventRecordID>122603</EventRecordID> <Correlation /> <Execution ProcessID="41588" ThreadID="0" /> <Channel>Application</Channel> <Computer><hostname>/Computer> <Security /> </System> <EventData> <Data>Rows Processed: case Rows:0 ============================================= The Package: Package Started: 12/20/2022 11:21:37 AM Current Time:12/20/2022 11:21:38 AM ============================================= Package Run Duration in seconds: 1 Execution GUID: {9DF22831-E608-47F7-BD62-F9BD3C2F9C77}</Data> </EventData> </Event>
Referenzen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für