Error "Error en INSERT EXEC debido a que el procedimiento almacenado ha alterado el esquema de la tabla de destino" en SQL Server 2016

Síntomas

Imagine la siguiente situación:

  • Tiene una base de datos de Microsoft SQL Server 2016 que está utilizando la característica de almacén de datos de consulta.

  • Tiene un procedimiento almacenado que realiza una llamada a otro procedimiento almacenado utilizando "Insertar... Sintaxis EXEC".

  • El almacén de datos de consulta periódicamente ejecuta limpieza automática que aumenta el tamaño para el tamaño máximo configurado, y el almacén de datos de consulta de estado cambia de READ_WRITE READ_ONLY.

En este escenario, ejecución del procedimiento almacenado principal falla periódicamente y recibe un mensaje de error similar al siguiente:

Msj 556, nivel 16, estado 2, línea 5Error en INSERT EXEC del procedimiento almacenado ha alterado el esquema de la tabla de destino.

Causa

Cuando el almacén de datos de la consulta se ejecuta limpieza automática, esto limpia planes fuera del almacén de datos de consulta. La consulta encuentra una operación de recompilación porque el plan es que faltan desde el almacén de datos de consulta, pero el plan sigue estando presente en la caché de procedimientos. Por diseño, cuando se produce la operación de volver a compilar, SQL Server genera el error 556 para evitar duplicada ejecución del procedimiento secundario, que produciría resultados incorrectos se devuelven.

Solución alternativa

Para evitar este problema, siga estos pasos:

  1. Aumentar el tamaño del almacén de datos de consulta. Esto reducirá la frecuencia o la probabilidad de que el almacén de datos de la consulta desactivando el plan y escribiendo READ_ONLY modo operativo.

  2. Agregar control de errores a su código para detectar errores 556 y vuelva a enviar la consulta INSERT EXEC.

  3. Borrar la caché de procedimientos al almacén de datos de consulta regresa al estado READ_WRITE de READ_ONLY.

Información adicional

Debido a los cambios realizados en el almacén de datos de consulta de Microsoft SQL Server 2017, este problema no ocurre en SQL Server 2017. Este problema no se solucione en 2016 de SQL Server.

¿Necesita más ayuda?

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Unirse a Microsoft Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×