Saya memiliki sertifikat yang ingin saya hapus dari database.
Jika saya mengeluarkan perintah
DROP CERTIFICATE <FooCert>
Saya mendapatkan kesalahan
The certificate cannot be dropped because one or more entities are either signed or encrypted using it
Menurut Jason Strate, saya harus bisa mengetahui apa yang ditandatangani oleh sertifikat.
Kueri berikut mengembalikan 0 baris:
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'
Saya juga mencoba memisahkan entitas per pertanyaan SO ini. /programming/52460/how-do-i-find-and-decouple-entities-from-a-certificate-when-upgrading-ms-sqlserv
Bagaimana saya bisa menghapus dependensi pada sertifikat ini sehingga saya bisa menghapusnya?
sql-server
sql-server-2012
encryption
certificate
signature
Geoff Dawdy
sumber
sumber
Jawaban:
Untuk menemukan item yang terkait dengan Sertifikat dan Kunci Asimetris, pertama coba kueri yang diposting di DBA.SE ini.
Temukan prosedur, fungsi, pemicu, rakitan, dan yang ditandatangani sertifikat / kunci asimetris yang ditandatangani
Jika itu tidak mengembalikan objek apa pun, selanjutnya coba pertanyaan berikut yang mencari:
Harap dicatat bahwa Login adalah tingkat Server / Instance sedangkan yang lainnya adalah tingkat Database. Selain itu, Kunci Enkripsi Basis Data, saat berada di level Basis Data, dilaporkan dalam DMV yang mengembalikan data untuk semua basis data, dan karenanya tidak berubah berdasarkan pada Basis Data "saat ini".
sumber
Mengalami masalah serupa, bagi saya kueri ini membantu saya menemukan objek yang ditandatangani:
Sumber
Kemudian saya hanya menggunakan perintah berikut sebagai contoh di mana
dbo.sp_name
objek yang ditandatangani danSTOREDPROCEDURESIGNINGCERT
sertifikat penandatanganan.sumber