Síntomas
Suponga que intenta eliminar datos de una tabla y los datos se hace referencia en otras tablas de Microsoft SQL Server 2016 y 2017. If explorar consulta plan de ejecución, puede ver utiliza un operador de referencia de clave externa Compruebe .En esta situación, puede recibir un mensaje de error siguiente incluso si la fila que se está eliminado no se hace referencia en otras tablas:
Msg 547, nivel 16, estado 0, línea LineNumber
La instrucción DELETE en conflicto con la restricción de referencia
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".
Resolución
Este problema se corrigió en la siguiente actualización acumulativa para SQL Server:
Nota: Este problema se corrige en la actualización acumulativa 6. 2016 SP2 de SQL Server.
Acerca de las actualizaciones acumulativas de SQL Server:
Cada nueva actualización acumulativa para SQL Server contiene todas las revisiones y todas las revisiones de la seguridad que se incluyeron en la actualización acumulativa anterior. Consulte las actualizaciones acumulativas más recientes para SQL Server:
Solución alternativa
Para resolver este problema, utilice uno de los métodos siguientes:
-
Utilice el nivel de compatibilidad inferior 130 para ejecutar esta consulta.
-
Cambiar la estructura del índice en la tabla de referencia.
Más información
Nivel de compatibilidad de configuración de ámbito de inicial de la base de datos 130 de 2016 de SQL Server, un plan de ejecución de consulta puede utilizar una referencia de clave externa Operador de verificación para comprobar si las filas de la otra hace referencia a una fila de una tabla tablas a través de restricciones de integridad referencial. Puede utilizarse el operador si una tabla hace referencia a un gran número de tablas externas. En este operador SQL Server elige un índice de cada tabla de referencia para realizar dicha comprobación. If una tabla de referencia tiene un índice con varias columnas de clave, dicha parte columnas al principio no forman parte de la clave externa, pero algunos otros las columnas son parte de la clave externa. Esto puede resultar en comprobación incorrecta que se realiza por SQL Server.
Por ejemplo, considere el siguiente esquema:
Crear tabla tpk (pk int restricción cpk de clave principal agrupada)
Crear tabla tfk (un int, int fk restricción cfk referencias de clave externa tpk, índice ia clustered(a,fk))
Este esquema puede resultar en este problema, pero si cambia orden de columnas de índice i a (fk, un), no lo hará.
Referencias
Obtener información sobre la terminologíaque utiliza Microsoft para describir las actualizaciones de software.