データベースから削除したい証明書があります。
コマンドを発行した場合
DROP CERTIFICATE <FooCert>
エラーが出る
The certificate cannot be dropped because one or more entities are either signed or encrypted using it
Jason Strateによれば、証明書によって何が署名されているかを知ることができるはずです。
次のクエリは0行を返します。
SELECT OBJECT_SCHEMA_NAME(co.major_id) + '.' + OBJECT_NAME(co.major_id)
FROM sys.certificates c
INNER JOIN sys.crypt_properties co ON c.thumbprint = co.thumbprint
WHERE co.crypt_type_desc = 'SIGNATURE BY CERTIFICATE'
AND c.name = 'FooCert'
このSOの質問に従って、エンティティを分離することも試みました。 /programming/52460/how-do-i-find-and-decouple-entities-from-a-certificate-when-upgrading-ms-sqlserv
この証明書の依存関係を削除して、削除できるようにするにはどうすればよいですか?
私がここに投稿したクエリを試してください:署名されたプロシージャ、関数、トリガー、アセンブリ、および証明書/非対称キーを見つけます。それは何かを見つけますか?もしそうなら、私はそれを投稿するか、ここへのリンクだけを投稿できます。そうでない場合は、それが証明書ベースのログイン/ユーザーであると思います。そのためのクエリを投稿できます。
—
ソロモンルツキー2016年
0行が返されました。
—
Geoff Dawdy、2016年
データベースのいずれかで「透過的データ暗号化」(TDE)を有効にしていますか?
—
SQLPRODDBA
@SQLPRODDBA TDEについて言及していただきありがとうございます:-)。私はそれについて考えていませんでしたが、それを見つけるために私の答えにクエリを追加しました(そしてそれをテストし、動作することを確認しました)。
—
ソロモンルツキー2016年
@srutzky検討してくれてありがとう!あなたのスクリプトは素晴らしいです!
—
SQLPRODDBA 2016年