Thursday, July 23, 2009

"Performance counter registry hive consistency check" while installing SQLServer 2008

昨天在一台"全新"的WinServer 2008上準備安裝SQL 2008,前面會先進行一些檢查,結果還是遇到一些問題。主要是下面這一項無法通過檢查:
效能計數器登錄區一致性失敗(英文版的訊息如title)

點選後可以看見詳細"一點點點點"的訊息如圖:

勤勞一點的人可能就會循著訊息給的網址去一探究竟,是一篇主要教你做三個動作的文章:
  1. Rebuild the base performance counters
  2. Re-add the extensible counters
  3. Reinstall any custom .NET Framework assembly performance counters
它有英文版中文版,強烈不建議看中文版XD 機器翻的超奇怪。不過說真的,這篇文章對我個人似乎沒什麼幫助,相當遺憾。

先來說說這個訊息到底是要表達啥鬼好了。中文的話,了解了之後跟字面上的意思的確滿接近的XD,登錄區指的就是註冊表... 裡面有某些值因不明原因變的不一樣了,that's all.
根據 Ref #1 裡的敘述就是這兩對值:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib
下的Last Counter還有Last Help
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009
下的Counter還有Help(這兩個是多字串值,分別看他們最後一組數字)

其實我看到90%的文章都說只要以 ...\Perflib\009這組值為準,把 ...\Perflib的Last Counter還有Last Help改成一樣就好。但是大家都不說,前提是你的作業系統是英文版的... = =
其實我的 ...\Perflib底下不只有\009還有一個\0404,但是\0404裡只有一個(預設值),沒有Counter跟Help,於時我就試著在\0404下替他新增這兩個多字串值,內容跟...\Perflib\009的一樣。就搞定了...

順便聊聊,很多人的中文版好像不是\0404而是\004,超奇怪的= =,我一直不知道這個數字是哪裡來的,不過有看到其他人再教怎麼找出這個數字(請參閱Ref #2)。只要隨便開個console程式,跑一行程式即可。

string str2 = string.Format("{0,3}", CultureInfo.InstalledUICulture.Parent.LCID.ToString("X")).Replace(" ", "0");
跑出來的數字就是所謂的LCID(Locale ID),請見Ref列表,而0404就是Chinese - Taiwan。

以上~ 下台一鞠躬。

Ref:

Comments

0 Responses to ""Performance counter registry hive consistency check" while installing SQLServer 2008"

Post a Comment

Tags