¿Alguien conoce el comando para verificar si hay una transacción no comprometida en SQL Server 2005?¿Cómo verificar que haya una transacción que aún no se haya comprometido en SQL Server 2005?
24
A
Respuesta
34
uso @@trancount o sys.dm_tran_active_transactions DMV en SQL 2005, 2008
8
plazo
DBCC OPENTRAN
19
XACT_STATE() informa del estado de la transacción de la sesión, indicando si la sesión tiene una transacción activa, y si la transacción puede o no ser comprometida. Devuelve tres valores:
- 1, La sesión tiene una transacción activa. La sesión puede realizar cualquier acción, incluso escribir datos y confirmar la transacción.
- 0, no hay transacción activa para la sesión.
- -1, la sesión tiene una transacción activa, pero se ha producido un error que ha causado que la transacción se clasifique como una transacción no confirmable. La sesión no puede comprometer la transacción o retroceder a un punto de rescate; solo puede solicitar una reversión completa de la transacción. La sesión no puede realizar ninguna operación de escritura hasta que revierte la transacción. La sesión solo puede realizar operaciones de lectura hasta que revierte la transacción. Una vez que la transacción se ha retrotraído, la sesión puede realizar operaciones de lectura y escritura y puede comenzar una nueva transacción.
@@ TRANCOUNT Devuelve el número de transacciones activas para la conexión actual.
- 0, no en una transacción
- 1, en una transacción
- n, en una transacción anidada
0
sp_who2 sp_lock nombre
5
SELECT
trans.session_id AS [SESSION ID],
ESes.host_name AS [HOST NAME],login_name AS [Login NAME],
trans.transaction_id AS [TRANSACTION ID],
tas.name AS [TRANSACTION NAME],tas.transaction_begin_time AS [TRANSACTION BEGIN TIME],
tds.database_id AS [DATABASE ID],DBs.name AS [DATABASE NAME]
FROM sys.dm_tran_active_transactions tas
JOIN sys.dm_tran_session_transactions trans
ON (trans.transaction_id=tas.transaction_id)
LEFT OUTER JOIN sys.dm_tran_database_transactions tds
ON (tas.transaction_id = tds.transaction_id)
LEFT OUTER JOIN sys.databases AS DBs
ON tds.database_id = DBs.database_id
LEFT OUTER JOIN sys.dm_exec_sessions AS ESes
ON trans.session_id = ESes.session_id
WHERE ESes.session_id IS NOT NULL
--db voluntad obtener solo cuando se ejecuta un comando SELECT @@ TRANCOUNT. de otro modo NULO
ejecutar el código anterior ... les dará a los detalles de la sesión en la que occures la transacción ..
0
En resumen, existen varios métodos:
- SELECT @@ trancount
- DBCC OPENTRAN
- SELECT XACT_STATE()
- sp_lock
- SELECT * FROM sys.dm_tran_active_transactions
Cuestiones relacionadas
- 1. ¿Cómo deshago una transacción que ya se ha comprometido?
- 2. Verificar que la apk de Android no se haya reempaquetado.
- 3. Verificar que se haya cargado el script externo
- 4. ¿cómo puedo verificar que un SqlDataSource haya devuelto datos?
- 5. Espere hasta que se haya completado .append()
- 6. ¿Cómo verificar que la variable en una clase diferente se haya actualizado?
- 7. ¿Cómo elimino un archivo aún no comprometido que he agregado?
- 8. SQL Server 2005: interbloqueo de transacción
- 9. Comprueba que el repositorio de git local tenga todo comprometido y lo haya enviado al dominio
- 10. Compruebe que el registro se haya insertado correctamente en Symfony2
- 11. ¿Cómo puedo verificar que se haya llamado exactamente a un método una vez con Moq?
- 12. ¿Cómo verificar que se haya enviado un correo cuando se usa Zend_Mail?
- 13. hilo de espera hasta que se haya producido una condición
- 14. ¿Es posible para la cláusula SQL Output devolver una columna que no se haya insertado?
- 15. ¿Cómo comprobar que no haya datos ingresados en bash read?
- 16. ¿Cómo se usa moq para verificar que se haya pasado un objeto similar como argumento?
- 17. ¿Cómo puedo detectar que se haya presionado la tecla Shift?
- 18. ¿Agregar todos los archivos en una carpeta que no se haya agregado en subversión?
- 19. Cómo verificar que se haya utilizado otro método de la clase con Moq
- 20. Rhinomocks, ¿cómo verificar que nunca se haya llamado un stub/mock?
- 21. ¿Cómo verificar los resultados del trabajo del paquete SSIS después de que se haya completado su ejecución?
- 22. En Python intento hasta que no haya ningún error
- 23. C# ¿Debería buclear hasta que no haya ninguna excepción?
- 24. Redirigir antes de que se haya completado la carga POST
- 25. Espere hasta que Application.Calculate haya terminado
- 26. Cómo crear una restricción única compuesta en SQL Server 2005
- 27. Isoweek en SQL Server 2005
- 28. Mockito Verifique que no haya más interacciones pero omiten captadores
- 29. ¿Existe alguien que haya usado JBoss Errai en sus proyectos?
- 30. Agregar servicios después de que se haya construido el contenedor
+1 muy bien explicar ... cómo realizar la reversión completa de la transacción como dijiste 'La sesión no puede comprometer la transacción o retrotraer a un punto de rescate; solo puede solicitar una reversión completa de la transacción. . ¿Qué quieres decir con la reversión completa? –
@KhurramAli, "-1" significa que no puede usar "commit" o "rollback YourSavePoint", pero debe usar "rollback", que básicamente establece @@ transcount para poner a cero cada transacción anidada. –