为什么在SQL Server 2005上页面预期寿命为0(零)


8

我们一直想知道我们SQL Server的页面预期寿命。因此,我们使用Perform查看计数器。该值为零,并且永不更改。我以为一定有错误,所以我检查了SQL Server DMV查询

SELECT [object_name],[counter_name],[cntr_value]
FROM sys.dm_os_performance_counters
WHERE [object_name] LIKE '%Manager%'
AND [counter_name] = 'Page life expectancy'

整天也返回零。

为了使这一点更有趣,我们检查了“缓冲区高速缓存命中率”计数器,该计数器的平均值约为99-100。

那么,当“缓冲区高速缓存命中率”为100时,页面预期寿命如何为零?

我们缺少什么?如果始终为零,则对我而言意味着没有任何内容保留在缓冲区高速缓存中,如果缓冲区高速缓存命中率为100,这似乎是不正确的?

提前致谢

Answers:


4

我将从执行此处概述的步骤开始:

如何重建SQL Server 2005或2008实例的性能计数器

2015年8月更新:上方链接似乎已断开。替代参考:

故障排除:SQL Server(2005、2008)性能计数器集合问题(CSS)

链接资源的基本步骤

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

  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。将/TSQL Server性能计数器提供程序加载为受信任的提供程序非常重要
  4. 循环远程注册表服务:
    net stop "Remote Registry"然后net start "Remote Registry"
  5. 使用winmgmt /resyncperfctr "<<PID>>"
    PID是的进程ID 强制进行WMI同步WinPriv.exe(可以从任务管理器中获取)

此外,从该资源中,还可能需要以下内容:

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

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