• sql server性能计数器缺失,sql server找回丢失的性能计数器


    【问题】性能计数器DMV 只有几行,甚至没有

    select * from sys.dm_os_performance_counters

    如下图,看右下角,只有57行,直接用安装介质 修复也不行;

      

    【解决方案】

    转自/参考官网:https://docs.microsoft.com/en-us/archive/blogs/pfelatam/sql-performance-counters-are-missing

    有一次,当我使用通过性能监视器上的 SQL Server 计数器收集性能数据的工具提供服务时,当我尝试查看数据但没有任何信息时,我感到很惊讶。

    他们我直接在性能监视器上检查了 SQL Server 计数器,但计数器不在列表中。这就是我决定写这篇博客的原因,以了解如果性能监视器上的 SQL Server 计数器消失该怎么办。

    (1)通过介质修复sql server文件

      恢复 SQL 计数器的正确且最简单的方法是通过添加/删除程序修复 SQL Server 二进制文件。

      但是,这将需要 SQL 实例停机(如果您使用的是集群,则可以切换到另一个节点)

    因此,还有另一种选择,您可以执行以下步骤来恢复此计数器:

    (2)重载该数据库实例的性能计数器

    首先,您需要打开一个具有管理权限的命令提示符控制台。

    转到要修复的 SQL 实例上的目录 BINN(例如:C:Program FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLBinn)

    现在为了避免任何不一致,使用 unlodctr MSSQLSERVER 消除 SQL 计数器的任何剩余部分,对于命名实例,使用格式 MSSQL$NombreInstancia

    现在要加载计数器,您应该使用以下命令 

    lodctr perf-MSSQLSERVERsqlctr.ini
    # perf-MSSQL$NombreInstanciasqlctr.ini

    如果您使用的是命名实例,您应该使用这种格式 perf-MSSQL$NombreInstanciasqlctr.ini,您可以执行该命令两次以检查计数器已添加。

    注意:我尝试了 sqlctr.ini,但它不起作用。然后在我尝试 perf-mssqlserversqlctr.ini 之后,它起作用了。

    现在您应该使用以下命令重新启动远程注册表和性能日志和警报服务:

    net stop "Remote Registry"  &&  net start "Remote Registry"  

    net stop "Performance Logs & Alerts"  &&  net start " Performance Logs & Alerts " 

    # 这个也可以写成  net stop pla && net start pla

    注意:如果 mssqlserver 的计数器:buffer cache hit ratio = 0,重启 mssql 服务,则该值将等于 100。

    如果您使用前面的过程来恢复 SQL Server 群集上的 SQL 计数器,则应在两个节点上重建群集,当您重建计数器时,活动 SQL 实例必须位于节点上。

    (3)通过注册表

    如果执行上述步骤后 SQL Counters 没有出现,则需要查看注册表配置单元和注册表项(不建议在注册表级别进行任何更改,否则可能会导致操作系统不稳定。如果如果您选择进行这些更改,您应该有操作系统和注册表的备份,以便在必要时恢复它),以下注册表项应该存在并且具有有效的配置。

    [HKEY_LOCAL_MACHINESystemCurrentControlSetServices<<service name>>Performance]

    Library 
    Open 
    Collect 
    Close 
    PerfIniFile

    您还应该检查 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionPerflib  中是否有一个名为 Disable Performance Counters 的键,如果配置为 1,则应配置为 0。这应该允许您重建注册表计数器和帮助文件。 

    现在可能需要或不需要重建 SQL 和/或操作系统计数器,在 perfmon 上查找 SQL 计数器,如果它们不存在,则使用前面的步骤重建,然后使用以下命令重建所有操作系统计数器。

    cd %systemroot%system32

    /R

    您应该考虑的另一个注意事项是在 Windows Server 64 位环境中执行 SQL Server 32 位时

    我希望这篇文章对您有所帮助,请记住,我们的博客上有大量好文章可以帮助您解决许多 SQL Server 主题以及如何解决一些问题。下篇文章见!

    (4)命令总结文档

    默认实例为: MSSQLSERVER

      例如:unlodctr MSSQLSERVER

    如果是命名实例:MSSQLSERVER2

      则:unlodctr MSSQL$MSSQLSERVER2

      

  • 相关阅读:
    SpringMVC案例3----spring3.0项目拦截器、ajax、文件上传应用
    TCP/IP、UDP、 Http、Socket的差别
    HttpClient 图讲解明
    数据库设计--数据的垂直拆分
    未经处理的异常在 System.Data.dll 中发生。其它信息:在应使用条件的上下文(在 &#39;***&#39; 附近)中指定了非布尔类型的表达式。
    VMware 下扩展linux硬盘空间
    cocos2d_android 第一个游戏
    解决安卓程序安装没图标的问题
    Qt编译错误GL/gl.h: No such file or directory
    【编程题目】二元树的深度
  • 原文地址:https://www.cnblogs.com/gered/p/15167862.html
Copyright © 2020-2023  润新知