2010-10-18 2 views
7

Ok, ecco uno strano. Ho una routine che passa e fa diverse cancellazioni di vecchi dati. Ive ha avuto un paio di persone si lamentano ottenere l'errore:Istruzione DELETE in conflitto con il vincolo REFERENCE

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

Guardando il mio codice (im utilizzando L2S), non vedo come questo sia possibile. Ma ok, diciamo che lo è. Chiedo al cliente di inviarmi il loro DB in modo che possa eseguirne il debug un po ', una cattura: quando lo collego al mio server SQL ed eseguo la routine, non ottengo errori. Tutto funziona come cancellato & come previsto. Si tratta di un'istanza di SQL 2008 Express su Win2008 da cui proviene originariamente il DB e l'ho collegato a un'istanza di SQL 2008 completa. Ci sono delle differenze che potrebbero causare un simile comportamento?

+1

Il tuo cliente ha l'abitudine di lasciare che i propri 'pro dba' aggiungano trigger e quali no al tuo schema? Mi è successo prima e mi fa venir voglia di mangiare la mia tastiera. – Alex

+0

@Alex, è possibile, ma quei trigger saranno ancora presenti quando collego il DB al mio server? –

+0

Hmm, forse puoi chiedere loro se ti stanno inviando il db esatto che è in esecuzione nel loro ambiente - incluse le eventuali "estensioni" che potrebbero aver aggiunto. Sono anche curioso di sapere se si tratta esclusivamente di un problema SQL o L2S. Inoltre, potresti provare a eseguire il tuo codice in un debugger ma collegandoti al loro db? – Alex

risposta

1

Richiedere al client di accedere ai registri di SQL Profiler e controllare quale SQL è in esecuzione. Confronta questo con i dati nelle tabelle per verificare il vincolo.