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

tto*_*sen 8 sql-server-2005 sql-server page-life-expectancy

我们一直想知道 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'
Run Code Online (Sandbox Code Playgroud)

这也整天返回零。

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

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

我们缺少什么?如果它始终为零,那对我来说意味着缓冲区缓存中没有任何内容,如果缓冲区缓存命中率是 100,这似乎不正确?

提前致谢

Rem*_*anu 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。/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. 向系统帐户授予完全控制权限