レジストリ ハイブの肥大化について(KB 2793634)

清水 磨 (しみず おさむ)

SQL Server Support Engineer

SQL Server 2012 SP1の製品不具合 (KB 2793634) に起因し、一部のレジストリ ハイブのサイズが拡張される可能性がある事象について説明します。
本不具合はすでに修正されておりますが、この不具合に起因し、一部のレジストリハイブの拡張が進行した場合、OSの再インストールが必要になる場合があります。
そのため、SQL Server 2012 SP1 を使用されている場合には、SQL Server 2012 の最新のサービスパックを適用ください。

以下に詳細を記載します。

[ 影響を受けるSQL Serverのバージョン ]
SQL Server 2012 SP1 (11.*.3000.*)
SQL Server 2012 SP1 CU1 (11.*.3321.*)

※ アスタリスクの部分には環境によって異なる値が入ります。
そのため、先頭の値が11であること、3番目の値が上記の値(3000か3321)になっていることをご確認下さい。
例:11.00.3000.00 など

SQL Server のバージョンを確認する方法は、下記公開情報の” 実行している SQL Server データベース エンジンのバージョンとエディションを確認する方法” をご参照下さい。

SQL Server とそのコンポーネントのバージョンとエディションを確認する方法
https://support.microsoft.com/kb/321185/ja

セキュリティ更新プログラムを Windows Update などから適用されている場合、SQL Server 2012 SP1 に対応する MS14-044 が適用されていると存じます。
このセキュリティ更新プログラム以降が適用されている環境は、対策済みとなりますので影響は受けません。
バージョンでは、11.*.3153.* となっていることで、MS14-044 が適用されていることを確認できます。

※2015/02/04 現時点

 

[影響を受けるSQL Serverのエディション]
SQL Server 2012 Express Edition を含む、全てのエディションが影響を受けます。

また、本事象はSQL Server 2012 をインストール後に、SP1 を別途適用している場合に発生いたします。
SQL Server 2012 のインストール時に、[製品の更新プログラム] 機能を使用し SP1 を適用した状態にてインストールした場合や、下位互換機能の [スリップストリーム] 機能を使用してインストールした場合には、発生いたしません。

[事象]
SQL Server 2012 SP1 のインストール後、一部のレジストリハイブのサイズが徐々に拡張されていく可能性があります。
その結果として、レジストリ全体のサイズが拡張されることになり、自分のプロファイルを用いてWindows にログオンできなくなったり、リソース不足に関連したエラーが発生する可能性があります。

また、レジストリ全体のサイズが拡張されることにより、レジストリに関する操作ができなくなる可能性があります。
あわせてSQL Server の修正プログラムも適用できなくなる可能性があるため、結果としてOSの再インストールが必要となる場合があります。
根本的にレジストリの拡張を防ぐには、修正プログラムの適用が必要となります。(下記 “対処方法” をご確認下さい)

本不具合については、以下の公開情報に記載がございます。

Windows Installer starts repeatedly after you install SQL Server 2012 SP1
https://support.microsoft.com/kb/2793634/en-us

SQL Server 2012 SP1 のインストール後に Windows インストーラーを繰り返し開始します。 (機械翻訳)
https://support.microsoft.com/kb/2793634/ja

[ 対処方法 ]
SQL Server 2012 の最新のサービスパックを適用します。
その他の不具合も修正されておりますため、弊社としても推奨している方法となります。

Microsoft® SQL Server® 2012 Service Pack 2 (SP2)
https://www.microsoft.com/en-us/download/details.aspx?id=43340

なお、運用上、SPの適用が難しいお客様もいらっしゃるかと思います。
そうした場合には、個別の修正プログラムを適用する、もしくはSQL Server 2012 SP1 CU2 を適用することでも対処が可能です。
状況に応じて、適切な修正プログラムを適用して下さい。

もし、SQL Server 2012 SP1 RTM をインストールされている場合には、下記修正プログラムまたは CU2以降を適用します。
SQL Server 2012 SP1 のセキュリティ以外の更新プログラム (KB 2793634)
https://www.microsoft.com/ja-JP/download/details.aspx?id=36215

もし、SQL Server 2012 SP1 CU1 をインストールされている場合には、SQL Server 2012 SP1 CU2 以降を適用します。
SQL Server 2012 Service Pack 1 用の累積的な更新プログラム パッケージ 2
https://support.microsoft.com/kb/2790947/ja

[ 原因 ]
SQL Server 2012 関連コンポーネントが不適切なアセンブリを参照し、ネイティブ イメージの生成に繰り返し失敗します。
この結果、.NET Framework の NGEN サービス(.NET アプリケーションのパフォーマンス向上のため、ネイティブイメージを作成し、キャッシュしておくサービス) の SQL Serverに関連するレジストリ ハイブが拡張されます。

[発生頻度]
環境によりレジストリの肥大化のスピードは異なります。
そのため、環境によってはレジストリの肥大化が進行していない場合もございますが、将来的にレジストリの肥大化が発生しうる状況は変わりません。
上記の理由より、出来る限り早い段階で修正プログラムを適用して頂くことをお勧め致します。

[ 確認方法 ]
弊社技術情報 2793634 の事象は、以下の条件すべてに合致している場合、影響を受けていると判断できます。

1) SQL Server 2012 SP1 を使用 (11.*.3000.*) 、もしくはSQL Server 2012 SP1 CU1 (11.*.3321.*) を使用している

2) イベントログ (アプリケーション) に以下のようなメッセージが記録されている
--------------------------
イベント Id: 1004
ソース: MsiInstaller
説明: 製品 '{A7037EB2-F953-4B12-B843-195F4D988DA1}' 機能 'SQL_Tools_Ans'、'{0CECE655-2A0F-4593-AF4B-EFC31D622982}' のコンポーネントの検出に失敗しました。リソース ' が存在しません。

イベント Id: 1001
ソース: MsiInstaller
説明: コンポーネント '{6E985C15-8B6D-413D-B456-4F624D9C11C2}' の要求時に製品 '{A7037EB2-F953-4B12-B843-195F4D988DA1}'、'SQL_Tools_Ans' の機能の検出に失敗しました。
--------------------------

[肥大化したレジストリ対する対処方法]
レジストリの肥大化している状況の確認方法や肥大化したレジストリの圧縮方法については、以下のURLにてご案内しております。
レジストリ サイズが大きく拡張されていることが確認できた際は、早急に上記対処策のいずれかを実施し、肥大化したレジストリについては圧縮することをご検討下さい。

HKLM\SOFTWARE のサイズ確認方法と、肥大化した場合の圧縮方法
https://blogs.technet.com/b/askcorejp/archive/2015/03/23/hklm-software.aspx

 

[変更履歴]
2014/09/09 一部内容をUPDATEしました。
2014/11/21 一部内容をUPDATEしました。(エディション、発生頻度について)
2014/11/28 影響を受けるSQL Server のエディション についてUPDATEしました。
2015/02/04 影響を受けるSQL Server のエディション についてUPDATEしました。
2015/04/24 肥大化したレジストリの確認方法と圧縮方法についてUPDATEしました。