Ich habe ein Zertifikat, das ich aus der Datenbank entfernen möchte.
Wenn ich den Befehl erteile
DROP CERTIFICATE <FooCert>
Ich bekomme den Fehler
The certificate cannot be dropped because one or more entities are either signed or encrypted using it
Laut Jason Strate sollte ich herausfinden können, was mit dem Zertifikat signiert ist.
Die folgende Abfrage gibt 0 Zeilen zurück:
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'
Ich habe auch versucht, die Entitäten gemäß dieser SO-Frage zu entkoppeln. /programming/52460/how-do-i-find-and-decouple-entities-from-a-certificate-when-upgrading-ms-sqlserv
Wie kann ich die Abhängigkeiten von diesem Zertifikat entfernen, damit ich es entfernen kann?
sql-server
sql-server-2012
encryption
certificate
signature
Geoff Dawdy
quelle
quelle
Antworten:
Versuchen Sie zunächst die in dieser DBA.SE-Antwort angegebene Abfrage, um Elemente zu finden, die mit Zertifikaten und asymmetrischen Schlüsseln verknüpft sind. Antwort:
Finden Sie signierte Prozeduren, Funktionen, Trigger, Assemblys und nach welchen Zertifikaten / asymmetrischen Schlüsseln
Wenn dadurch keine Objekte zurückgegeben werden, versuchen Sie als Nächstes die folgenden Abfragen, nach denen gesucht wird:
Bitte beachten Sie, dass Anmeldungen auf Server- / Instanzebene erfolgen, während alles andere auf Datenbankebene erfolgt. Außerdem werden Datenbankverschlüsselungsschlüssel auf Datenbankebene in einer DMV gemeldet, die Daten für alle Datenbanken zurückgibt und sich daher nicht basierend auf der "aktuellen" Datenbank ändert.
quelle
Bei einem ähnlichen Problem ist mir diese Abfrage geholfen, das signierte Objekt zu finden:
Quelle
Dann habe ich nur den folgenden Befehl als Beispiel verwendet, bei dem
dbo.sp_name
es sich um das signierte Objekt undSTOREDPROCEDURESIGNINGCERT
das Signaturzertifikat handelt.quelle