SSIS WMI查询计算应用程序事件日志中的错误

时间:2015-03-10 14:04:24

标签: sql-server-2008 ssis

我知道有一个WMI数据读取器任务,但我不想要所有的错误日志结果,只是一个计数。你也似乎无法在WMI查询中执行COUNT(*),你必须在之后计算你的结果吗?那么,计算这些结果的好方法是什么。我不想把它们放在桌子上。我只想在过去24小时内从Windows事件日志中计算错误。

我正在使用的查询是这样的

“SELECT * FROM Win32_NtLogEvent WHERE Logfile ='Application'和Type ='error'和TimeWritten> '03 / 10/2015'”

但是,我只需要获得这些结果的数量。我认为使用脚本任务可能会更好吗?

[更新]
除了Kyle在下面的回复,我发现了这一点 http://nirav.extreme-advice.com/2013/02/22/ssis-package-to-get-disk-space-info-with-wmi-and-script-task/

以上,基本上改变了我接近事物的方式。我没有尝试将结果保存到单个值变量,而是将其更改为对象类型和数据表。然后添加了一个脚本任务来简单地获取数据表的计数,然后将其保存到我的变量中以进行计数。

1 个答案:

答案 0 :(得分:1)

是的,有两种*方法可以实现这一点:脚本任务(更直接,但需要编写脚本)或使用行计数转换(仅使用开箱即用的SSIS。)

" no-code"方法:

  1. 创建WMI数据读取器任务。将您的查询结果写入CSV文件。
  2. 创建数据流任务。使用您的平面文件作为来源。添加行计数转换并将计数写入变量。将平面文件数据推送到Recordset变量(可以忽略它。)
  3. 根据需要记录您的记录计数变量(将SQL任务执行到数据库,写入文件,发送电子邮件等)。
  4. 如果您确实选择使用脚本,我的建议是绕过WMI数据读取器任务的开销,并在脚本任务中执行整个操作。

    根据项目的范围,您可能最好编写PowerShell脚本来获取值,只需使用Execute Process任务来运行脚本,并通过stdout将值推送到SSIS或直接进行日志记录PowerShell脚本。