安装MS SQL Server 2008 “性能计数器注册表配置单元一致性”失败的解决办法
安装SQL Server 2008出现问题,在安装前检测时,安装程序报错,“性能计数器注册表配置单元一致性”,点击错误连接时,会提示,查看文章,URL地址:http://support.microsoft.com/kb/300956。
虽然该文章提示只适用于windows 2000英文版,不过就个人使用体验,在windows xp Professional中文版也是适用的。下面的内容是根据该文章为蓝本,笔者在安装过程中的操作。
第一,打开注册表。开始菜单-->运行-->输入regedit,打开注册表;
第二,找到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\Perflib\009注册表项,将Last Counter值设置为十进制的“1846”,将Last Help值设置为十进制的“1847”;
第三,查找HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services 注册表项,使用查找功能,搜索该节点下所有含有performance的子项,删除名称为下表的值:
- FirstCounter
- FirstHelp
- LastCounter
- LastHelp
第三,在XP安装盘的i386目录下找到名为“PERFC009.DA_”以及“PERFH009.DA_”的文件,将这两个文件拷贝到c盘根目录下,打开命令行工具,进入到c盘根目录位置,使用expand命令解压缩这两个文件,命令如下:
expand PERFH009.DA_ perfh009.dat
以及
expand PERFC009.DA_ perfc009.dat
将expand后的文件perfh009.dat以及perfc009.dat拷贝到%systemroot%system32目录下,一般情况下是c:\windows\system32目录,系统提示是否覆盖原文件,选择“是”。
第四,打开命令行工具,输入如下命令
- cd %Systemroot%\System32
- findstr drivername *.ini
按回车键后,命令行工具中会输出驱动程序名称以及对应的ini文件。
在命令行中输入lodctr inifile,inifile是需要加载的驱动程序所对应的ini文件名称,例如需要加载TermService驱动,那么inifile就是TermService驱动对应的ini文件名tslabels.ini,在命令行输入的命令如下所示
lodctr tslabels.ini
第五,微软给出的文章中注明,需要重启计算机,我没有做,再次进行SQL 2008安装前的检测,通过,“性能计数器”的问题解决了。
备注:
1. 第四步骤,使用lodctr工具重新添加可扩展计数器时,在我的操作中,某些计数器无法添加,例如,键入lodctr esentprf.ini,命令行给出的错误是“无法打开驱动程序关键字: SYSTEM\CurrentControlSet\Services\ESENT\Performance 状态值: 2”,原因不清,还请知道的牛人告诉我原因,先谢谢您了。
2. 下面是我使用Expand工具解压缩后的perfc009.dat以及perfh009.dat文件,下载后,直接覆盖%systemroot%system32目录下的同名文件即可。下载地址https://files.cnblogs.com/StoneGarden/perf.zip。
3. 微软官方网站的相关文章地址如下:
如何手动重新生成性能计数器库值http://support.microsoft.com/kb/300956
如何在 Windows 2000 中使用 COMPRESS、COMPACT 和 EXPAND 命令压缩或解压缩文件和文件夹http://support.microsoft.com/kb/314958/。