将性能计数器写入MS SQL数据库的免费工具?

是否有一些(免费)工具读取性能计数器(Windows 2008服务器,但2003年的支持是奖金),并将其添加到MS SQL Server 2008数据库?

在最坏的情况下我不需要太花哨,我可以通过触发器添加“日志轮换”。

编辑:澄清,我想读取任何性能计数器(CPU负载,磁盘队列,ASP.net的东西),只使用SQL Server作为数据存储。 有点像内置的CSV日志logging工作。

logman.exe和relog.exe,Windows操作系统的内置工具。 请参阅Windows XP Logman.exe,Relog.exe和Typeperf.exe工具的说明 。

将重定位Perfmon二进制日志文件重新映射到SQL的一个简短示例

确实,理论上你可以用logman将样本直接收集到SQL中,实际上最好是收集到二进制文件,然后用relog将它们转换为SQL。

所以实际上你想要它作为明文。 Perfmon可以直接login到SQL Server,但它创build它自己的模式和表。 在模式中取得相应的值可能是值得的,然后开发你自己的视图来添加它,因为那么你添加的任何计数器都会自动产生你想要在度量上做的任何计算。 Schema可以在这里find 。 如果你使用重新日志,你会想使用这篇文章来转换date/时间

这里是一个示例查询返回最小值和平均30分钟的平均值。 间隔:

SELECT t2.objectname, t2.countername, DATEADD( minute, (DATEPART(minute,CAST(SUBSTRING(t1.counterdatetime,1,23) AS DATETIME))/30)*30, DATEADD(hour,DATEDIFF(hour,0,CAST(SUBSTRING(t1.counterdatetime,1,23) AS DATETIME)),0)) AS Period, AVG(t1.countervalue) AS [Avg], MIN(t1.countervalue) AS [Min], MAX(t1.countervalue) AS [Max] FROM counterdata t1 INNER JOIN counterdetails t2 ON t2.counterid=t1.counterid WHERE t2.countername = '% Processor Time' AND t2.instancename = '_Total' AND t2.objectname = 'Processor' GROUP BY DATEADD( minute, (DATEPART(minute,CAST(SUBSTRING(t1.counterdatetime,1,23) AS DATETIME))/30)*30, DATEADD(hour,DATEDIFF(hour,0,CAST(SUBSTRING(t1.counterdatetime,1,23) AS DATETIME)),0)), t2.objectname, t2.countername ORDER BY Period 

我知道这是旧的,但我没有看到任何被接受的答案,所以我会加上我的两分钱…

我正在寻找类似的东西,并遇到了一个名为PolyMon( http://polymon.codeplex.com/ )的工具。 实际的性能计数器由Windows服务收集,然后隐藏到SQL Server中。 pipe理用户界面是一种笨重的,但它的工作原理,迄今为止我已经build立了约60个计数器。