Verwaiste Einschränkungen in der SQL Server-Datenbank
-
15-11-2019 - |
Frage
Das Ausführen der folgenden Abfrage führt zu allen Einschränkungen in der Datenbank unseres Kunden.Allerdings scheinen mehrere Zeilen in der Ergebnismenge kein übergeordnetes Element zu haben, d. h. parent_object_id = 0
Und OBJECT_NAME(parent_object_id)
kehrt zurück NULL
.
SELECT name, type_desc, OBJECT_NAME(parent_object_id), parent_object_id
FROM sys.objects
WHERE is_ms_shipped = 0
AND type_desc LIKE '%_CONSTRAINT'
Bedeutet das, dass die Datenbank verwaiste Einschränkungen enthält?Wenn ja, wie entferne ich diese?
Anhand ihrer Namen kann ich erkennen, dass es sich um Überbleibsel aus der Zeit handelt, bevor große Änderungen an der Struktur vorgenommen wurden.
Lösung
Benutzen sp_helptext
Ich kann sehen, dass sie mit a erstellt wurden CREATE DEFAULT
Aussage, z.B.:
CREATE DEFAULT dbo.MyDefault AS 2
Dies bedeutet, dass es sich einfach um ungebundene Standardwerte handelt, die mit dem gebunden werden können sp_binddefault
entsprechend MSDN, und mit einem einfachen entfernt DROP DEFAULT
Stellungnahme:
DROP DEFAULT dbo.MyDefault
Mir war diese Syntax nicht bekannt, die laut dem oben genannten MSDN-Artikel offenbar in einer zukünftigen Version von SQL Server entfernt wird.