如何恢复SQL Server 2008 R2性能计数器?


11

我正在Windows 7 x64上运行SQL Server 2008 R2 Developer,作为默认实例。由于某种原因,SQL Server的性能计数器似乎已消失。SELECT * FROM sys.dm_os_performance_counters返回零行。

我试过跑步lodctr /T:perf-MSSQLSERVERsqlctr.ini。尽管它顺利完成,但是即使重新启动Remote Registry服务之后,它也无法解决任何问题。实际上,perfmon现在缺少这些计数器。unlodctr MSSQLSERVER仍然说没有安装计数器,但是lodctr /Q:MSSQLSERVER说它们已经存在并启用了。常规Windows和.NET计数器工作正常。

在Windows错误日志中,我看到错误8317:

无法查询与注册表项“ HKLM \ SYSTEM \ CurrentControlSet \ Services \ MSSQLSERVER \ Performance”关联的值“ First Counter”。SQL Server性能计数器被禁用。

我怀疑问题可能是由安装失败的SQL 2012 RC0触发的。除了重新安装SQL Server 2008 R2以外,如何恢复的任何建议?


您的意思是“ Visual Studio 11”(不是“ 2011”?)
gbn

是的,VS11。关于serverfault的问题是,所有已发布的答案都无法解决该问题。我希望面向DBA的用户可能能够提供更多有用的帮助。
RickNZ

Answers:


4

尝试一下lodctr /R,它将根据存储在注册表中的信息重建所有性能计数器。


在我的情况下,缺少更多的计数器,而不仅仅是SQL Server。lodctr /R做到了把戏,并全部恢复了。非常感谢您的窍门。
Endrju 2013年

4

阅读以下内容:

http://blogs.msdn.com/b/psssql/archive/2009/03/03/troubleshooting-sql-server-2005-2008-performance-counter-collection-problems.aspx

确切的说明不是100%正确。假设您使用的是默认实例,则需要执行以下操作:

unlodctr MSSQLSERVER
lodctr perf-MSSQLSERVERsqlperf.ini
lodctr /T:MSSQLSERVER

然后重新启动。


我发现我的perf-MSSQLSERVERsqlctr.ini中的symbolfile路径不正确。我修复了它,执行了lodctr /T:perf-MSSQLSERVERsqlctr.ini,lodctr perf-MSSQLSERVERsqlctr.ini并重新启动了SQL Server。
Der_Meister


2

看起来SQL Server的性能计数器已禁用,或者性能计数器的注册表项已损坏。

lodctr /E:MSSQLSERVER 将重新加载性能计数器注册表设置。


0

如果要在64位Windows安装上运行32位版本的SQL Server,则需要使用32位版本的Performance Monitor来查看计数器,如MSDN Blog中所述。使用以下两种方法之一:

  1. perfmon.exe%windir%\SysWOW64文件夹运行
  2. 运行命令 mmc /32 perfmon.msc

另外,请确保您正在运行带有最新Service Pack和修补程序的SQL Server。 MSKB文章2708726描述了将更新应用到SQL Server 2008 R2或SQL Server 2012时性能监视器.dll文件无法正确更新的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.