2010-04-07 6 views
4

J'essaie de supprimer une contrainte sur une table db, quelque chose comme:Impossible de supprimer la contrainte dans le serveur SQL 2005 «Impossible de supprimer la contrainte Voir les erreurs précédentes »

ALTER TABLE MyTable drop CONSTRAINT FK_MyTable_AnotherTable 

Mais l'exécution court juste et fonctionne. Si je l'arrête, je vois:

Msg 3727, Level 16, State 0, Line 2 
Could not drop constraint. See previous errors. 

recherche sur le Web vomit différentes pages mais notez que la contrainte est bien nommé et je suis en train de le supprimer en utilisant le nom correct

+0

Quelle est l'erreur précédente? –

Répondre

2

J'ai trouvé un moyen de trier cela, même si je ne comprends pas pourquoi c'était nécessaire.

ont été en mesure de laisser tomber la contrainte en le désactivant d'abord:

ALTER MyTable NOCHECK CONSTRAINT FK_MyTable_AnotherTable 

La chute complète alors tout va bien

serait toujours heureux de recevoir vos commentaires sur la raison pour laquelle cela est nécessaire

+0

Je veux supprimer une colonne qui n'est ni la clé primaire ni la clé étrangère, je recevais la même erreur, j'ai essayé votre solution, mais cela n'a pas fonctionné . des idées ? –

1

Vérifiez que vous avez pas déjà a laissé tomber la contrainte, comme:

SELECT OBJECT_ID('FK_MyTable_AnotherTable') 

Si cela retourne null, votre contrainte n'existe plus. Cela expliquerait le message d'erreur.

+0

Non la contrainte n'a pas déjà été supprimée, j'ai essayé votre méthode ainsi que d'autres et cela existe toujours. Cela m'empêchera aussi de laisser tomber la colonne associée – DannykPowell

+0

@DannykPowell: Que montre 'object_id ('FK_MyTable_AnotherTable', 'F')'? – Andomar

+0

Voir ma réponse, ont trié en désactivant la contrainte d'abord- merci pour votre réponse @Andomar – DannykPowell

1

J'étais ayant le même problème sur SQL Server 2008 R2, j'ai résolu mon problème avec ci-dessous la ligne j'espère que cela fonctionnera pour quelqu'un d'autre aussi :)

Alter Table [Table Name] 
    DROP Column [Column Name] 
+0

puis-je connaître la raison de donner mes années -1? Je serai heureux si vous me corrigez. –

+2

J'espère que vous avez déjà la réponse à votre question. Je ne pense pas que le propriétaire du thread veut supprimer une colonne, il veut juste laisser tomber la clé étrangère (peut-être pour changer la définition de la colonne) – NPC

0

J'ai eu le même problème.

La raison en est que j'ai fait une erreur dans mon instruction de curseur, qui était l'itération d'une contrainte que je devais abandonner. Cette erreur s'est produite lorsque la contrainte a été supprimée dans la même transaction. Ensuite, j'ai fait un rollback et vérifié si elle existait: c'est le cas (bien sûr, après le rollback!).

Vérifiez s'il existe réellement au moment de la chute.

Questions connexes