SSIS WMI 查询以计算应用程序事件日志中的错误
SSIS WMI query to count errors in applicaiton event log
我知道有一个 WMI 数据 Reader 任务,但我不想要所有错误日志结果,只想要一个计数。您似乎也不能在 WMI 查询中执行 COUNT(*) ,之后您必须计算结果?那么,什么是计算这些结果的好方法。我不想将它们放在 table 中。我只想要过去 24 小时 windows 事件日志中的错误计数。
我要使用的查询是这样的
"SELECT * FROM Win32_NtLogEvent WHERE Logfile='Application' and Type='error' and TimeWritten > '03/10/2015' "
但是,我只需要获取这些结果的计数。我认为使用脚本任务可能会更好?
[更新]
连同下面凯尔的回复,我发现了这个
http://nirav.extreme-advice.com/2013/02/22/ssis-package-to-get-disk-space-info-with-wmi-and-script-task/
以上,基本上改变了我处理事情的方式。我没有尝试将结果保存到单个值变量,而是将其更改为对象类型和数据 table。然后添加一个脚本任务来简单地获取数据的计数table,然后将其保存到我的变量中以进行计数。
是的,有两种*方法可以实现此目的:脚本任务(更直接,但需要编写脚本)或使用行计数转换(仅使用开箱即用的 SSIS。)
"no-code"方法:
- 创建一个 WMI 数据 Reader 任务。将查询结果写入 CSV 文件。
- 创建数据流任务。使用您的平面文件作为来源。添加行计数转换并将计数写入变量。将平面文件数据推送到 Recordset 变量(可以忽略。)
- 根据需要记录您的记录计数变量(将 SQL 任务执行到数据库、写入文件、发送电子邮件等)
如果您选择使用脚本,我的建议是绕过 WMI 数据 Reader 任务的开销,并在脚本任务中完成整个任务。
并且根据您的项目范围,您最好编写一个 PowerShell 脚本来获取值,然后只使用执行进程任务 运行 脚本,然后通过标准输出将值推送到 SSIS或者直接在 PowerShell 脚本中进行日志记录。
我知道有一个 WMI 数据 Reader 任务,但我不想要所有错误日志结果,只想要一个计数。您似乎也不能在 WMI 查询中执行 COUNT(*) ,之后您必须计算结果?那么,什么是计算这些结果的好方法。我不想将它们放在 table 中。我只想要过去 24 小时 windows 事件日志中的错误计数。
我要使用的查询是这样的
"SELECT * FROM Win32_NtLogEvent WHERE Logfile='Application' and Type='error' and TimeWritten > '03/10/2015' "
但是,我只需要获取这些结果的计数。我认为使用脚本任务可能会更好?
[更新]
连同下面凯尔的回复,我发现了这个
http://nirav.extreme-advice.com/2013/02/22/ssis-package-to-get-disk-space-info-with-wmi-and-script-task/
以上,基本上改变了我处理事情的方式。我没有尝试将结果保存到单个值变量,而是将其更改为对象类型和数据 table。然后添加一个脚本任务来简单地获取数据的计数table,然后将其保存到我的变量中以进行计数。
是的,有两种*方法可以实现此目的:脚本任务(更直接,但需要编写脚本)或使用行计数转换(仅使用开箱即用的 SSIS。)
"no-code"方法:
- 创建一个 WMI 数据 Reader 任务。将查询结果写入 CSV 文件。
- 创建数据流任务。使用您的平面文件作为来源。添加行计数转换并将计数写入变量。将平面文件数据推送到 Recordset 变量(可以忽略。)
- 根据需要记录您的记录计数变量(将 SQL 任务执行到数据库、写入文件、发送电子邮件等)
如果您选择使用脚本,我的建议是绕过 WMI 数据 Reader 任务的开销,并在脚本任务中完成整个任务。
并且根据您的项目范围,您最好编写一个 PowerShell 脚本来获取值,然后只使用执行进程任务 运行 脚本,然后通过标准输出将值推送到 SSIS或者直接在 PowerShell 脚本中进行日志记录。