2010-10-18 23 views
7

Ok, aquí hay una extraña. Tengo una rutina que se realiza y realiza varias eliminaciones de datos antiguos. He tenido unas pocas personas se quejan acerca de cómo obtener el error:declaración DELETE en conflicto con la restricción de REFERENCIA

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

En cuanto a mi código (im utilizando L2S), no veo cómo esto es posible. Pero vale, digamos que es. Le pido al cliente que me envíe su base de datos para que pueda depurarlo, detectarlo: cuando lo conecto a mi servidor SQL y ejecuto la rutina, no aparece ningún error. Todo funciona & elimina como se esperaba. Esta es una instancia de SQL 2008 Express en Win2008 de la que proviene originalmente la base de datos, y la conecto a una instancia completa de SQL 2008. ¿Hay alguna diferencia que pueda causar tal comportamiento?

+1

¿Su cliente tiene la costumbre de dejar que sus 'pro dba' agreguen desencadenantes y qué no a su esquema? Me ha pasado antes y me da ganas de comer mi teclado. – Alex

+0

@Alex, es bastante posible, pero ¿esos desencadenantes aún estarían presentes cuando conecto la base de datos a mi servidor? –

+0

Hmm, quizás pueda preguntarles si le están enviando el db exacto que se está ejecutando en su entorno, incluidas las "extensiones" que puedan haber agregado. También me interesa si esto es estrictamente un problema de SQL o L2S. Además, ¿podrías intentar ejecutar tu código en un depurador pero conectándose a su base de datos? – Alex

Respuesta

1

Haga que el cliente agarre los registros del perfilador SQL y compruebe qué sql se está ejecutando. Compare esto con los datos en las tablas para verificar la restricción.

Cuestiones relacionadas