Tengo un certificado que me gustaría eliminar de la base de datos.
Si publico el comando
DROP CERTIFICATE <FooCert>
Me sale el error
The certificate cannot be dropped because one or more entities are either signed or encrypted using it
Según Jason Strate, debería poder averiguar qué está firmado por el certificado.
La siguiente consulta devuelve 0 filas:
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'
También he intentado desacoplar las entidades según esta pregunta SO. /programming/52460/how-do-i-find-and-decouple-entities-from-a-certificate-when-upgrading-ms-sqlserv
¿Cómo puedo eliminar las dependencias de este certificado para poder eliminarlo?
sql-server
sql-server-2012
encryption
certificate
signature
Geoff Dawdy
fuente
fuente
Respuestas:
Para buscar elementos asociados con certificados y claves asimétricas, primero intente la consulta publicada en este DBA. Respuesta de SE:
Encuentre procedimientos firmados, funciones, disparadores, ensamblajes y por qué certificados / claves asimétricas
Si eso no devuelve ningún objeto, intente las siguientes consultas que buscan:
Tenga en cuenta que los inicios de sesión son a nivel de servidor / instancia mientras que todo lo demás es a nivel de base de datos. Además, las claves de cifrado de la base de datos, aunque se encuentran en el nivel de la base de datos, se informan en un DMV que devuelve datos para todas las bases de datos y, por lo tanto, no cambia en función de la base de datos "actual".
fuente
Encontré un problema similar, para mí esta consulta me ayudó a encontrar el objeto firmado:
Fuente
Luego, utilicé el siguiente comando como ejemplo donde se
dbo.sp_name
encuentra el objeto firmado ySTOREDPROCEDURESIGNINGCERT
el certificado de firma.fuente