Question

L'exécution de la requête suivante entraîne toutes les contraintes dans la base de données de notre client.Cependant, plusieurs lignes du jeu de résultats ne semblent pas avoir de parent, c'est-à-dire parent_object_id = 0 et OBJECT_NAME(parent_object_id) Retour 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'

Cela signifie-t-il qu'il existe des contraintes orphelines dans la base de données ?Si oui, comment puis-je les supprimer ?

D’après leurs noms, je peux voir qu’il s’agit de restes d’avant que de grandes modifications ne soient apportées à la structure.

Était-ce utile?

La solution

En utilisant sp_helptext Je peux voir qu'ils ont été créés à l'aide d'un CREATE DEFAULT déclaration, par exemple :

CREATE DEFAULT dbo.MyDefault AS 2

Cela signifie qu'il s'agit simplement de valeurs par défaut non liées, qui peuvent être liées à l'aide du sp_binddefault selon MSDN, et supprimé avec un simple DROP DEFAULT déclaration:

DROP DEFAULT dbo.MyDefault

Je n'étais pas au courant de cette syntaxe, qui sera apparemment supprimée dans une future version de SQL Server, selon l'article MSDN susmentionné.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top