la actualización del servidor sql afecta a 0 registros pero llena el registro de transacciones

Tengo una instrucción SQL que actualiza los registros de una tabla si la consulta devuelve algún registro. La consulta solo devuelve registros si es necesario actualizarlos. Cuando ejecuto la selección en la consulta, no obtengo registros, por lo que cuando se ejecuta la actualización, no debería haber registros actualizados.

El problema que tengo es que la consulta en el procedimiento almacenado no finalizará porque el registro de transacciones se llena antes de que se complete la consulta. No me preocupa que el registro de transacciones se llene en este momento.

Mi pregunta es, si no se actualizan los registros, ¿por qué se escribe algo en el registro de transacciones?

preguntado el 11 de septiembre de 13 a las 14:09

Hay alguna UPDATE gatillo en la mesa? -

¿Qué error estás recibiendo? ¿Está seguro de que está llenando el registro de transacciones y no tempdb? -

¿Qué operaciones llenan el registro? En concreto, ¿qué tipo de LOP_XXX las operaciones aparecen cuando consulta con SELECT ... FROM fn_dblog(...)? -

Tal vez el registro de tempdb se llene. Por favor, publique el mensaje de error completo. -

probablemente se deba a un mal plan de consulta en la ejecución. si sus tablas están indexadas, asegúrese de que su consulta esté configurada para usarlas; de lo contrario, debería considerar agregar algunos índices no agrupados en las columnas de la consulta. -

2 Respuestas

Necesitamos más información antes de que este problema pueda ser resuelto...

Remus tiene una gran idea para mirar las entradas en el archivo de registro.

Ejecutar DBCC SQLPERF(logspace) le indicará qué tan lleno está el archivo de registro.

Borre el archivo de registro mediante una copia de seguridad del registro de transacciones. Esto supone que el modelo de recuperación es COMPLETO y se ha realizado una copia de seguridad COMPLETA.

Vuelva a ejecutar el procedimiento almacenado de actualización. Mire las entradas del archivo de registro de transacciones.

Una copia del procedimiento almacenado y las definiciones de la tabla sería genial. Buscar otros procesos (sp_who2) durante la ejecución que puedan llenar el registro es otro buen lugar para buscar.

Cualquier desencadenante que pueda causar actualizaciones, eliminaciones o inserciones puede aumentar el tamaño del archivo de registro, sugerido por Martin.

Buena suerte.

Respondido el 11 de Septiembre de 13 a las 15:09

Parece que el problema estaba en la unión. Fue agotador unir tantos registros que tempdb se estaba llenando hasta el punto de que no había más espacio en el disco. - RUEMAQUINA

Parece que el problema estaba en la combinación. Fue agotador unir tantos registros que tempdb se estaba llenando hasta el punto de que no había más espacio en el disco.

Respondido el 12 de Septiembre de 13 a las 19:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.