安装SQL 2012 SP1后Software注册表单元变得很大

最近我们的一些客户碰到了一个SQL 2012 SP1的已知问题,这里给大家提供解释和参考。

这个已知问题现有的现象是:

1) 安装了SQL 2012 SP1工具等组件

2) Software注册表单元变得很大

3) Windows Installer反复启动

4) 高CPU使用率

以下是相关的一些文档。Cumulative Update 2 for SQL Server 2012 SP1 修复了这个问题,但该修复是避免将来再发生此类现象,而现有的Software注册表单元很大等症状仍会保持。

https://support.microsoft.com/kb/2793634?wa=wsignin1.0

https://blogs.msdn.com/b/sqljourney/archive/2012/10/25/why-the-registry-size-can-cause-problems-with-your-sql-2012-alwayson-setup.aspx

Software注册表单元一旦超过2GB会很难缩小,所以当你注意到这个问题的时候,要尽早采取措施。

我们有以下建议: 

  • 安装最新的CU包来避免Software注册表继续增长。请注意,由于Software注册表单元很大,Windows Installer有可能由于无法正常工作而不能将CU安装成功。这样的话我们必须将Software注册表单元缩小后再安装补丁。
     
  • 停止ngen 服务业也可以避免Software注册表单元继续增加新的键值。

用run as administrator方式打开cmd.exe

如果你使用64-bit 服务器,运行以下命令:

o  %windir%\Microsoft.NET\Framework\v4.0.30319\ngen.exe queue pause

o  %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen.exe queue pause

如果你使用32-bit 服务器,运行以下命令:  

 o   %windir%\Microsoft.NET\Framework\v4.0.30319\ngen.exe queue pause

之后,CPU使用率也应该恢复正常。

如何缩小Sofware注册表单元

方法1:

  • 检查regback文件夹 (C:\windows\system32\config\RegBack) ,该文件夹下有Software注册表单元的备份,如果备份不是很老,也不大,那最佳方案是还原备份。注意:在备份日期后安装过的软件要卸载重装。

方法2:

  • 如果备份不存在,那我们需要手工做压缩。

a)     删除多余的注册表键值:

注:多余的注册表键值在下面路径中,不建议手工删除。 \Wow6432Node\Microsoft\.NETFramework\v2.0.50727\NGENService\Roots

运行如下命令:

-         用run as administrator方式打开cmd.exe

 如果你使用64-bit 服务器,运行以下命令:

    • %windir%\Microsoft.NET\Framework\v4.0.30319\ngen eqi
    • %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen eqi

如果你使用32-bit 服务器,运行以下命令:  

    • %windir%\Microsoft.NET\Framework\v4.0.30319\ngen eqi

b)     使用如下KB文档来压缩Software注册表单元

https://support.microsoft.com/kb/2498915

如果以上方法无效,建议你和我们全球技术中心联系,我们Windows支持组的工程师会帮助你压缩Software注册表单元。