将信息写入应用程序日志
可以在 Microsoft SQL Server Integration Services (SSIS) 包中包含脚本任务以运行任务。 例如,任务可能会将变量信息集合写入 Windows 应用程序日志。 可以创建包含数据流任务的 SSIS 包。 此数据流任务包括行计数转换。 可以使用脚本任务将行计数转换填充的数据写入 Windows 应用程序日志。
本文介绍如何使用脚本任务将信息写入 Windows 应用程序日志。
原始产品版本:SQL Server
原始 KB 编号:906560
说明
此示例假定你在 SSIS 包中创建了以下元素:
- 数据流任务。
- 脚本任务。
- 从数据流任务到脚本任务的连接器。
- 在数据流任务中,你在数据流中创建了行计数转换。
运行包时,行计数转换将返回要写入 Windows 应用程序日志的行计数数据。
配置脚本任务
若要配置脚本任务代码示例,请在 SSIS 设计器中执行以下步骤:
当“控制流”选项卡处于活动状态时,右键单击设计图面,然后选择“变量”。 左侧窗格将显示“变量”窗口。
在“变量”窗口中,选择“添加变量”,然后将变量名称作为 mycount 提供。 默认情况下,新 mycount 变量的数据类型为
Int32
。注意
对变量名称的引用区分大小写。
双击“数据流任务”。 活动窗口切换到“数据流”选项卡。
使用行计数转换的属性将 VariableName 属性值设置为 mycount。
选择“控制流”选项卡,然后双击“脚本任务”。 此时会显示“脚本任务编辑器”对话框。
在左窗格中,选择“脚本”项,然后将 ReadOnlyVariables 属性值更改为以下值:
PackageName,StartTime,ExecutionInstanceGUID,mycount
注意
PackageName、StartTime 和 ExecutionInstanceGUID 项是系统变量。 这些系统变量用于将包信息写入 Windows 应用程序日志。
在“脚本任务编辑器”对话框中,选择“编辑脚本”。
当出现新的 Microsoft Visual Studio for Applications (VSTA) 窗口时,请执行以下步骤:
请确保在任何其他声明之前,代码中包含以下命名空间。
Imports System Imports System.Data Imports System.Math Imports System.Diagnostics Imports Microsoft.SqlServer.Dts.Runtime
将以下代码示例替换为
Main()
方法中的代码。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
包成功运行后,Windows 应用程序日志中会显示以下条目。
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>
参考
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈