transaction stored ejemplos sql transactions

stored - transaction sql server 2014



Extraño problema de SQL2005. "SqlConnection no admite transacciones paralelas" (4)

¿Tiene transacciones implícitas activadas en alguna parte, por lo que hay algunas transacciones donde no las habría esperado? ¿Has abierto el Monitor de Actividad para ver si hay alguna transacción inesperada?

Tengo un problema que parece que es el resultado de una situación de punto muerto. Ahora estamos buscando la raíz del problema, pero mientras tanto queríamos reiniciar el servidor y poner en marcha al cliente.

Y ahora, cada vez que iniciamos el programa, solo dice "SqlConnection no admite transacciones paralelas". No hemos cambiado nada en el programa, su compilación y en el servidor de los clientes, pero después de la situación de "posible punto muerto", quiere volver a conectarse.

Tenemos 7 clientes (computadoras) que ejecutan el programa, cada cliente está hablando con un servicio web en un servidor local, y el servicio web está hablando con el servidor sql (la misma máquina que el servidor web).

Hemos reiniciado el servidor sql y el servidor iis, pero no hemos reiniciado el servidor debido a otros servicios importantes que se ejecutan en el servidor, así que es lo último que hacemos. No podemos ver bloqueos ni nada en la pestaña de administración.

Así que mi pregunta es, ¿por qué el error "SqlConnection no admite transacciones paralelas" que viene de una vez a otra sin cambiar nada en el programa y todavía vive entre sql-restart.

Parece que sucede en la primera solicitud de db que hace el programa cuando comienza.

Si necesita más información solo pregunte. Estoy confundido...

Más información: No creo que tenga transacciones "largas". El escenario es a menudo que tengo un conjunto de datos con 20-100 filas (ContractRows) en el que hago un .Update en el tableAdapter. También recorro esas 20-100 filas y para algunas de ellas crearé ad-hook-sql-querys (por ejemplo, si un producto alquilado está marcado como devuelto, creo una consulta sql para marcar el producto como se devuelve en la base de datos)

Así que hago esto muy simplificado:

Create objTransactionObject Create objtableadapter (objTransactionObject) for each row in contractDS.contractrows if row.isreturned then strSQL &= "update product set instock=1 where prodid=" & row.productid & vbcrlf End if next objtableadapter.update(contractDS) objData.ExecuteQuery(strSQL, objTransactionObject) if succsesfull objtransactionobject.commit else objtransactionobject.rollback end if objTran.Dispose()

Y luego estoy haciendo commit o rollback dependiendo de si salió bien o no.

Editar: ninguna de las respuestas ha resuelto el problema, pero le agradeceré los buenos punteros para la resolución de problemas.

El "SqlConnection no admite transacciones paralelas" desapareció repentinamente y ahora el servidor sql simplemente "baja" 4-5 veces al día, creo que es un punto muerto que hace eso pero no tengo el conocimiento adecuado para descubrirlo y estoy corto en SQL-expertos que pueden controlar esto para mí en este momento. Simplemente reinicio el servidor sql y todo vuelve a funcionar. 1 de cada 10 veces también tengo que reiniciar la computadora. Realmente me está molestando (y mis clientes, por supuesto).

Cualquier persona que conozca a una persona con buen conocimiento en el análisis de problemas con interbloqueos u otros problemas de sql en Suecia (o en cualquier parte del mundo, hablando inglés) puede ponerse en contacto conmigo. Sé que este no es un sitio de contacto, pero tomo mi decisión para hacer la pregunta porque me han quedado sin opciones, he pasado 3 días y noches optimizando a los clientes para asegurarme de cerrar las conexiones y no hacer demasiadas cosas estúpidas allí. . Sin suerte


El tuyo no parece ser un problema inusual. Google encontró muchos hits cuando pegué su cadena de error en el cuadro de consulta.

Al leer las respuestas pasadas, parece que tiene algo que ver con intercalar transacciones de forma incorrecta o con el nivel de aislamiento.

¿Cuánto tiempo se mantienen abiertas las conexiones? ¿Tienes transacciones de larga duración?


¿Has intentado hacer una copia de seguridad de tu registro de transacciones? Eso podría aclararlo también si recuerdo correctamente una experiencia previa similar.


Parece que estás compartiendo conexiones y creando nuevas transacciones en la misma conexión abierta (esta es la parte paralela de la excepción que estás viendo).

Su ejemplo parece respaldar esto ya que no menciona cómo adquiere la conexión en él.

Debe hacer una revisión de su código y asegurarse de que solo está abriendo una conexión y luego deshacerse de ella cuando haya terminado (y, por supuesto, use la instrucción de uso para asegurarse de cerrar la conexión), como parece como si estuvieras dejando uno abierto en alguna parte.