你目前正处于脱机状态,正在等待 Internet 重新连接

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

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 906560
概要
当您使用 Microsoft SQL Server 商业智能开发工作室创建 Microsoft SQL Server 2005 集成服务 (SSIS) 包时,您可以包括脚本任务中 SSIS 包来执行任务。

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

本文介绍如何将信息写入 Windows 应用程序事件日志中使用脚本任务。
更多信息
本示例假定您已在 SSIS 包中创建以下元素:
  • 数据流任务
  • 脚本任务
  • 脚本任务连接符从数据流任务
  • 在数据流任务中,您将创建数据流中的行计数转换。
当您执行文件包转换返回您要向 Windows 应用程序事件日志中写入行计数数据的行数。

要这样做请按照下列步骤中在 SQL Server 商业智能开发工作室:
  1. 激活 控制流 选项卡时用鼠标右键单击设计曲面图,然后单击 变量变量 窗口将显示在左窗格中。
  2. 变量 窗口中单击添加一个名为 mycount 的变量的 添加变量。默认状态下,新 mycount 变量的数据类型是 Int32

    注意引用的变量名称是区分大小写的。
  3. 双击 数据流 任务。此时将出现 数据流 选项卡。
  4. 双击 行计数 转换。 在 高级编辑器 对话框。
  5. 设置为 mycountVariableName 属性的值。
  6. 单击 控制流 选项卡,然后双击 脚本任务。在 脚本任务编辑器 对话框。
  7. 单击在左窗格中的 脚本 项,然后更改为以下值的 ReadOnlyVariables 属性的值:
    PackageName,StartTime,ExecutionInstanceGUID,mycount
    笔记 的 PackageName、 开始时间,和 ExecutionInstanceGUID 项是系统变量。这些系统变量用于包信息写入 Windows 应用程序事件日志。
  8. 脚本任务编辑器 对话框中单击 设计脚本
  9. 请确保您在任何其他声明之前的代码中包含下列命名空间:
    Imports SystemImports System.DataImports System.MathImports System.DiagnosticsImports 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 应用程序事件日志中会显示与以下内容类似的信息:

事件类型: 信息
从 SSIS 的事件源: RowCountReporting
事件类别: 磁盘
事件 ID: 777
日期: 10 2005/8 /
时间: 11:30:51 PM
用户: 不适用
ComputerName 的计算机:
说明:
已处理的行数:
情况 3 行:
=============================================
打包: RowCountsInEventLog
启动: 9/14/2005年 2:27:19 PM
当前时间: 9/14/2005年 2:27:19 PM
=============================================
包运行持续时间以秒为单位): 0
执行 GUID: {07406D68-487F-4733-BA3A-DA66A8AF7EFA}

有关详细的信息在 http://support.microsoft.com 看到帮助和支持中心。

参考
更多的信息,请参阅下面的 Microsoft SQL Server 2005 联机丛书中的主题:
  • 脚本任务
  • 编程脚本任务
  • 如何: 设置任务属性使用任务编辑器
有关如何通过使用 Microsoft Visual Basic 写入 Windows 应用程序事件日志的详细信息请访问下面的 Microsoft 开发人员网络 (MSDN) 的网站:

警告:本文已自动翻译

属性

文章 ID:906560 - 上次审阅时间:09/22/2006 01:55:02 - 修订版本: 3.2

Microsoft SQL Server 2005 Developer Edition, Microsoft SQL 2005 Server Enterprise, Microsoft SQL Server 2005 Standard Edition

  • kbmt kbsql2005ssis kbhowto KB906560 KbMtzh
反馈