J'ai un certificat que je voudrais supprimer de la base de données.
Si j'émets la commande
DROP CERTIFICATE <FooCert>
Je reçois l'erreur
The certificate cannot be dropped because one or more entities are either signed or encrypted using it
Selon Jason Strate, je devrais pouvoir savoir ce qui est signé par le certificat.
La requête suivante renvoie 0 lignes:
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'
J'ai également essayé de découpler les entités par cette question SO. /programming/52460/how-do-i-find-and-decouple-entities-from-a-certificate-when-upgrading-ms-sqlserv
Comment puis-je supprimer les dépendances de ce certificat afin de pouvoir le supprimer?
sql-server
sql-server-2012
encryption
certificate
signature
Geoff Dawdy
la source
la source
Réponses:
Pour rechercher des éléments associés aux certificats et aux clés asymétriques, essayez d'abord la requête publiée dans ce DBA.SE Réponse:
Trouvez les procédures signées, les fonctions, les déclencheurs, les assemblys et par quels certificats / clés asymétriques
Si cela ne renvoie aucun objet, essayez ensuite les requêtes suivantes qui recherchent:
Veuillez noter que les connexions sont au niveau serveur / instance tandis que tout le reste est au niveau base de données. En outre, les clés de chiffrement de base de données, tout en étant au niveau de la base de données, sont signalées dans un DMV qui renvoie des données pour toutes les bases de données et ne change donc pas en fonction de la base de données "actuelle".
la source
Rencontré un problème similaire, pour moi, cette requête m'a aidé à trouver l'objet signé:
La source
Ensuite, je viens d'utiliser la commande suivante comme exemple où se
dbo.sp_name
trouve l'objet signé etSTOREDPROCEDURESIGNINGCERT
le certificat de signature.la source