2009-01-15 19 views
8

Recibo este error con mucha frecuencia pero no consistentemente en 2 páginas en una aplicación que se encuentra en un entorno de producción. Solo tengo algunas capturas de pantalla del error a continuación.SQL Server 2005: interbloqueo de transacción

La transacción (ID de proceso XX) se bloqueó en el bloqueo | recursos de búfer de comunicación con otro proceso y se ha elegido como víctima de interbloqueo. Vuelva a ejecutar la transacción.

¿Cuál debería ser el enfoque para resolver este error? El servidor db es SQL Server 2005.

Respuesta

3

Este article de Brad McGehee es un buen lugar para comenzar.

3

Ver también aquí: Proactive Deadlock Notifications

+0

No deseo parecer negativo, pero el uso de los eventos de interbloqueo de perfil es el lugar habitual para comenzar en SQL Server 2005, en lugar de que las banderas de traza –

1

Se podría hacer como sugiere el mensaje de error y obtener el programa para volver a intentar la operación!

Depende mucho de cuán "atómica" sea la transacción. es decir, si estaba estancado, es probable que algún otro proceso haya actualizado satisfactoriamente la fila en la que está interesado. ¿Sigue teniendo sentido aplicar la actualización a la fila en estas circunstancias?

Por lo menos presentar al usuario un mensaje de error más agradable ("Otro usuario ha cambiado el xxxx estabas intentando actualizar. Por favor, revise los nuevos valores y vuelve a intentarlo.)

2

Tiene que ejecutar un punto muerto seguimiento de perfil mientras se producen los errores article de Brad McGehee es una visión general. Debe identificar los dos procesos ofensivos. Después de eso, revise el código en las dos páginas para ver qué comandos SQL se están emitiendo y con qué frecuencia. del tiempo, he encontrado que simplemente revisar el código SQL que se está ejecutando y saber con qué frecuencia se ejecuta identificará rápidamente el conflicto. La reparación en ocasiones lleva más tiempo ...

Cuestiones relacionadas