首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2005 安裝計數器登錄檢查失敗:手動修正 Perflib 註冊表值

     編輯:關於SqlServer

錯誤現象

SQL Server 2005 安裝程式系統配置檢查器(SCC)報錯:「計數器登錄值不正確,請手動在登錄表中增加計數器登錄表項值」。

根本原因

SCC 驗證 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib 下的 Last Counter 與 Last Help 值,必須與語言子機碼(如 009 英文、004 中文)中的最大 Counter/Help 值一致。

修正步驟

1. 開啟登錄編輯器

regedit.exe
-- Windows 2000 使用 regedt32.exe

2. 定位關鍵機碼


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib

記錄當前值:

  • Last Counter (REG_DWORD) 例:0x00000ed4 (5276)
  • Last Help (REG_DWORD) 例:0x00000ed5 (5277)

3. 檢查語言子機碼最大值


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\004  -- 中文環境關鍵
-- 009 為英文,004 為繁體/簡體中文

查看 Counter 與 Help 字串值中的最大索引號碼。

4. 修正不一致值

  • 若 Perflib\Last Counter ≠ Perflib\004\Counter 最大值 → 修改 Last Counter
  • 若 Perflib\Last Help ≠ Perflib\004\Help 最大值 → 修改 Last Help
  • 修改方式:右鍵值 → 修改 → 基數選「十進位」 → 輸入正確數值

實戰案例:中文版 SQL Server 2005

作者環境:

  • Perflib\Last Counter = 5276,Last Help = 5277
  • Perflib\009(英文)最大值匹配
  • Perflib\004(中文)最大值為 不同數值
  • 解決:將 Last Counter/Last Help 改為與 004 一致 → 安裝通過

驗證修復

  1. 關閉登錄編輯器
  2. 重新執行 SQL Server 2005 安裝程式
  3. 系統配置檢查器應通過計數器檢查

補充:自動修復腳本(PowerShell)


# 需系統管理員權限執行
$perflib = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib'
$lang = '004'  # 中文環境,英文用 009

$maxCounter = (Get-ItemProperty "$perflib\$lang").Counter -split '\s+' | 
    ForEach-Object { if ($_ -match '^\d+$') { [int]$_ } } | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum
$maxHelp = (Get-ItemProperty "$perflib\$lang").Help -split '\s+' | 
    ForEach-Object { if ($_ -match '^\d+$') { [int]$_ } } | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum

Set-ItemProperty $perflib -Name 'Last Counter' -Value $maxCounter
Set-ItemProperty $perflib -Name 'Last Help' -Value $maxHelp

Write-Host "Fixed: Last Counter=$maxCounter, Last Help=$maxHelp"

避坑指南

  • 修改登錄前務必匯出 Perflib 分支備份
  • 中文作業系統必須檢查 004 子機碼,非 009
  • 若安裝英文版 SQL Server,對應檢查 009
  • 此問題常見於安裝過多效能監控工具、手動修改登錄的機器
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved