2010-10-18 4 views
7

Ok, hier ist eine seltsame. Ich habe eine Routine, die mehrere alte Daten löscht und löscht. Ive hatte ein paar Leute beschweren sich über den Fehler bekommen:DELETE-Anweisung im Konflikt mit REFERENCE-Einschränkung

System.Data.SqlClient.SqlException: The DELETE statement conflicted with 
the REFERENCE constraint 

an meinem Code suchen (im mit L2S), ich nicht sehen, wie dies möglich ist. Aber ok, sagen wir es. Ich bitte den Kunden, mir ihre DB zu schicken, damit ich es debuggen kann, ein Haken: Wenn ich es an meinen SQL-Server anschließe und die Routine führe, erhalte ich keine Fehler. Alles funktioniert & löscht wie erwartet. Dies ist eine SQL 2008 Express-Instanz in Win2008, von der die DB ursprünglich stammt, und ich schließe sie an eine vollständige SQL 2008-Instanz an. Gibt es Unterschiede, die ein solches Verhalten verursachen würden?

+1

Ist Ihr Klient gewohnt, seine 'pro dba' Trigger hinzufügen zu lassen und was nicht zu Ihrem Schema? Es ist mir schon einmal passiert und es lässt mich meine Tastatur essen. – Alex

+0

@Alex, durchaus möglich, aber wären diese Trigger noch vorhanden, wenn ich die DB an meinen Server hänge? –

+0

Hmm, vielleicht können Sie sie fragen, ob sie Ihnen genau die db schicken, die in ihrer Umgebung läuft - einschließlich aller Erweiterungen, die sie hinzugefügt haben. Ich bin auch neugierig, ob dies streng genommen ein SQL-Problem oder L2S ist. Außerdem könnten Sie versuchen, Ihren Code in einem Debugger auszuführen, aber eine Verbindung zu ihrer db herzustellen? – Alex

Antwort

1

Lassen Sie den Client die SQL Profiler-Protokolle abrufen und überprüfen Sie, welche SQL ausgeführt wird. Vergleichen Sie dies mit den Daten in den Tabellen, um die Einschränkung zu überprüfen.