查询 DMV sys.dm_os_performance_counters 时返回零行

AA.*_*.SC 9 sql-server dmv sql-server-2014

我有一个用户SQL Server 2014 Standard Edition (RTM)具有SYSADMIN与服务器视图状态权限的角色,但是当我执行DMVsys.dm_os_performance_counters返回没有记录。

知道权限有什么问题吗?

在此处输入图片说明

@@Version 的输出:

Microsoft SQL Server 2014 - 12.0.2000.8 (X64) 2014 年 2 月 20 日 20:04:26 版权所有 (c) Microsoft Corporation Standard Edition(64 位)在 Windows NT 6.3(Build 9600:)(Hypervisor)上

Rea*_*ces 4

如果您确定相关用户已经这样做View Server State(并且在您的屏幕截图中看起来他确实这样做了)。

然后还有一些之前放在 msdn 博客中的原因。范围从:

  1. SQL Server 安装期间性能对象和计数器设置失败。
  2. 64 和 32 位平台的混合。
  3. 注册表权限已被扭曲

为了解决这个问题,我们可以使用指南中概述的相同步骤在不同的堆栈交换帖子中重新安装性能计数器:

使用提升的管理员命令提示符执行以下步骤。

  1. 将路径更改为BINN要更正的 SQL Server 实例的目录。
    (前任:C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\Binn
  2. 执行unlodctr <<REGISTERED SERVER NAME>>
    例如:unlodctr MSSQL$SQL2008SQLAgent$SQL2008...
  3. 执行lodctr /T:<<perf-sql* matching the counters you desire to load>>
    例如:perf-MSSQL$SQL2008sqlctr.iniperf-SQLAgent$SQL2008sqlagtctr.ini对于 SQLAgent。/T将 SQL Server 性能计数器提供程序加载为可信提供程序非常重要。
  4. 循环远程注册服务:
    net stop "Remote Registry"然后net start "Remote Registry"
  5. 强制使用 WMI 同步,winmgmt /resyncperfctr "<<PID>>"
    其中 PID 是进程 ID WinPriv.exe(您可以从任务管理器中获取)

可能还需要以下内容:

  • 确保已向HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009
    注册表项授予正确的安全权限:

    1. 向创建者所有者帐户授予完全控制权限。
    2. 向管理员帐户授予完全控制权限。
    3. 向该框/节点上的 SQL 管理员授予读取权限。
    4. 向系统帐户授予完全控制权限