如何通过使用 SQL Server 2005 集成服务包中的脚本任务将信息写入应用程序事件日志

概要

当您使用 Microsoft SQL Server 商业智能开发 Studio 创建 Microsoft SQL Server 2005年集成服务 (SSI) 包时,可以包含脚本任务在 SSIS 包来执行任务。

例如,任务可能会到 Windows 应用程序事件日志写入变量信息的集合。您可以创建包含数据流任务 SSIS 包。此数据流任务包括行计数转换。可以使用脚本任务写入到 Windows 应用程序事件日志中的行计数转换填充的数据。

本文介绍如何使用脚本任务来将信息写入到 Windows 应用程序事件日志。

详细信息

此示例假定 SSIS 包中创建了以下元素:

  • 数据流任务

  • 脚本任务

  • 从数据流任务对脚本任务连接器

  • 在数据流任务中,您创建了数据流中的行计数转换。

在执行包时,行计数转换将返回您要写入到 Windows 应用程序事件日志的行计数数据。

若要执行此操作,请按照 SQL Server 商业智能开发工作室中的这些步骤:

  1. 控制流选项卡处于活动状态时,设计图面上,用鼠标右键单击,然后单击变量变量窗口将显示在左窗格中。

  2. 变量窗口中,单击添加变量来添加一个名为 mycount 的变量。默认情况下,新的 mycount 变量的数据类型是Int32。

    注意:引用变量名区分大小写。

  3. 双击该数据流任务。"
    显示数据流的选项卡。

  4. 双击行计数转换。出现高级编辑器对话框。

  5. 设置属性值的变量名
    mycount。

  6. 单击控制流选项卡,然后双击脚本任务。显示脚本任务编辑器对话框。

  7. 单击左窗格中,该脚本项目,然后将ReadOnlyVariables属性的值更改为下面的值:

    PackageName,StartTime,ExecutionInstanceGUID,mycount

    注意:软件包名称、 开始时间和 ExecutionInstanceGUID 项目是系统变量。这些系统变量用于将包信息写入到 Windows 应用程序事件日志。


  8. 脚本任务编辑器对话框中,单击设计脚本

  9. 请确保您在任何其他声明之前的代码中包含下列命名空间:

    Imports System
    Imports System.Data
    Imports System.Math
    Imports System.Diagnostics
    Imports Microsoft.SqlServer.Dts.Runtime
  10. 新的Microsoft Visual Studio 应用程序窗口出现时, 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, sMachine)
    End If

    Dim ELog As New EventLog(sLog, sMachine, sSource)

    ELog.WriteEntry(sEventMessage, EventLogEntryType.Information, 777, 2)

    '###############################
    Dts.TaskResult = Dts.Results.Success
  11. 关闭Microsoft Visual Studio 应用程序窗口。


  12. 脚本任务编辑器对话框中,单击确定

  13. f5 键以执行包。

包成功运行时,Windows 应用程序事件日志中将显示类似于以下的信息:

参考资料

有关详细信息,请参阅 Microsoft SQL Server 2005年联机丛书中的下列主题:

  • 脚本任务

  • 编程脚本编写任务

  • 如何: 设置任务属性使用任务编辑器

有关如何通过使用 Microsoft Visual Basic 编写 Windows 应用程序事件日志的详细信息,请访问下面的 Microsoft 开发人员网络 (MSDN) Web 站点:

http://msdn.microsoft.com/en-us/library/07347hdt.aspx

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

谢谢您的反馈意见!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×