期限切れの証明書をデータベースサーバーから削除しようとしています。証明書は、SQL Server 2014 R2への接続を暗号化するために使用されました。接続を暗号化する必要がなくなったため、更新する代わりに証明書を削除したいのですが、証明書を削除すると、証明書が見つからないためにssl接続を確立できないため、SQLサーバーは起動できません。
私は次のことを行いました:
force encryption
からNO
へ。しかし、SQLは上記のエラーで開始できません。データベースも暗号化されません。
このクエリを実行して確認しました
SELECT
db.name,
db.is_encrypted,
dm.encryption_state,
dm.percent_complete,
dm.key_algorithm,
dm.key_length
FROM
sys.databases db
LEFT OUTER JOIN sys.dm_database_encryption_keys dm
ON db.database_id = dm.database_id;
GO
暗号化された状態は、すべてに対してnullを返します。
「エクスポート」とパスワードでサービスマスターキーを保護しましたが、それが何かに関係があるかどうかはわかりません。関係がある場合に「元に戻す」方法がわかりません。
SQL Serverからバインド解除する前に、証明書ストアから証明書を削除した可能性があります。私はまだそれをテストしていませんが、それを行った場合、[〜#〜] sscm [〜#〜]ダイアログに証明書が表示されないと思いますレジストリに保存されている拇印に一致するが、それを見つけることができない証明書を見つけるため。
証明書が構成されているSSCMの[クリア]ボタンをクリックすると、これを修正できる場合があります。レジストリに保存されている拇印がクリアされると、SQL Serverが起動しますが、証明書が見つからない場合、[クリア]ボタンが機能しない可能性があります。
それが機能しない場合は、次のレジストリにある証明書の値を確認してください。
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.12.MSSQLSERVER\MSSQLSERVER\SuperSocketNetLib
名前付きインスタンスを使用している場合、レジストリパスは異なります。
空白でない場合、SQL Serverはそこに格納されている拇印と一致する証明書を見つけようとします。証明書が見つからない場合、起動に失敗します。証明書が削除されていて、レジストリのCertificate値にサムプリントが含まれている場合は、そこにあるものを保存してから、サムプリントを削除して空白にします。これが完了すると、SQL Serverが起動します。
最後に、新しい証明書が既にある場合は、証明書ストアにインストールし、サービスをそれにバインドします[〜#〜] sscm [〜#〜]、およびSQL Server開始する必要があります。