今朝、Win2012で実行されているSQL Server 2012サービスがシャットダウンしたことが明らかになりました。サーバー管理者としてログインしてSSMSにアクセスしようとすると、資格情報を入力した後、「トランスポート」エラーが発生しました。 Windowsサービスをチェックすると、SQL ServerとAgentの両方が停止しました。それらを起動しようとしましたが、タイムアウトエラーが発生しました。
SQLイベントログには次のエントリが含まれます。
サーバーは、SSL接続を開始するために必要な証明書をロードできませんでした。次のエラーが返されました:0x8009030d。証明書をチェックして、有効であることを確認します。
Windowsイベントログには、次のエントリが含まれます。
ログ名:アプリケーション
ソース:MSSQLSERVER
日付:2013年3月14日09:01:40
説明:ユーザー指定の証明書をロードできません[Cert Hash(sha1) "A1CF6EE1C352B7A185950EB400013269759C24BD"]。サーバーは接続を受け入れません。証明書が正しくインストールされていることを確認する必要があります。 Books Onlineの「SSLで使用するための証明書の構成」を参照してください。
説明:TDSSNIClientの初期化がエラー0x80092004、ステータスコード0x80で失敗しました。理由:SSLサポートを初期化できません。オブジェクトまたはプロパティが見つかりません。
説明:TDSSNIClientの初期化は、エラー0x80092004、ステータスコード0x1で失敗しました。理由:インフラストラクチャエラーのため、初期化に失敗しました。以前のエラーを確認してください。オブジェクトまたはプロパティが見つかりません。
説明:ネットワークライブラリの内部エラーのため、ネットワークライブラリを起動できませんでした。原因を特定するには、エラーログでこのエラーの直前のエラーを確認します。
説明:SQL ServerはFRunCommunicationsManagerスレッドを生成できませんでした。関連する可能性のある問題については、SQL ServerエラーログとWindowsイベントログを確認してください。
次の手順で問題が修正されました。
上記は、次の再起動まで問題を修正するだけで、それによって再び発生しました。どうやら、SSL証明書にはSQL2012が読み取る権限が必要ですが、これが修正されるまで再起動を続けないので、SSL経由のSSMSではなくRDC経由でアクセスしています。
マシンのキーセットコンテナーフォルダーのACLを変更するアプリケーションがあります。これが発生すると、正規のキーセットユーザーはこれらのキーセットへのアクセスを失います。正しい権限セットについては、 KB 278381:MachineKeysフォルダーのデフォルトの権限 を参照してください。
絶対的な確認が必要な場合は、 バグ:SQL Server 2005がネットワークサービスアカウントで実行されている場合、証明書を使用して暗号化を有効にできない の「回避策」(リセットされるC++アプリのコンパイルが必要) ACLを適切に...)。ただし、前述のKB278381に従ってACLを設定するだけで、問題が解決するかどうかを確認できます。
その他の関連KB:
どのアプリケーションがACLを変更するかはまだわかりません。私のお金は一部のウイルス対策アプリにあります。ランダムな異種情報すべてについて、どうやって知っているのか尋ねないでください...
Remusが言及したものに加えて、暗号化サービスがクラッシュした場合に、これが起こっていることがわかります。サーバーを再起動すると問題は解決しますか?
これに似た状況でした。 SQL Server構成マネージャーで強制暗号化が「いいえ」であり、証明書ページがクリアであることが示されていても、このエラーが発生し続け、サービスをまったく開始できませんでした。
レジストリ(私のインストール用):
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQLServer\SuperSocketNetLib
証明書文字列の値は、エラーメッセージのハッシュと同じです。その値を削除するのがうまくいきました。