En SQL Server, ¿cómo sé qué modo de transacción estoy usando actualmente? Como autocommit, explícito o implícito. ¿Y cómo puedo cambiar un modo a otro usando tsql? Muchas gracias.En SQL Server, ¿cómo sé qué modo de transacción estoy usando actualmente?
Respuesta
IF @@TRANCOUNT = 0 PRINT 'No current transaction, autocommit mode (default)'
ELSE IF @@OPTIONS & 2 = 0 PRINT 'Implicit transactions is off, explicit transaction is currently running'
ELSE PRINT 'Implicit transactions is on, implicit or explicit transaction is currently running'
no lo hago Creo que hay una manera de determinar si la transacción actual se inició explícita o implícitamente. Por lo tanto, este código solo intenta adivinar: si IMPLICIT_TRANSACTIONS está desactivado, se supone que la transacción se iniciará explícitamente.
referenciasMSDN:
select @@OPTIONS & 2
si esto devuelve 2, está en modo de transacción implícita. Si devuelve 0, estás en autocommit.
Para cambiar el modo que se encuentre, tendrá que utilizar
set implicit_transactions on
o
set implicit_transactions off
Debe ser implicit_transactions. –
@daniel_aren - cierto, cambiado ahora. No sé por qué no fue visto antes. –
¿Activar/desactivar esto ocurre en el nivel de Servidor o en la sesión activa donde está ocurriendo la transacción? – SQLnbe
Ligera modificación de guión previamente publicado - conexión está en el modo de confirmación automática si no hay ninguna transacción activa y transacciones implícitas están apagados :
IF @@TRANCOUNT = 0 AND (@@OPTIONS & 2 = 0)
PRINT 'No current transaction, autocommit mode (default)'
ELSE IF @@TRANCOUNT = 0 AND (@@OPTIONS & 2 = 2)
PRINT 'Implicit transactions is on, no transaction started yet'
ELSE IF @@OPTIONS & 2 = 0
PRINT 'Implicit transactions is off, explicit transaction is currently running'
ELSE
PRINT 'Implicit transactions is on, implicit or explicit transaction is currently running' + CAST(@@OPTIONS & 2 AS VARCHAR(5))
- 1. ¿Qué versión de CodeIgniter estoy usando actualmente?
- 2. Emacs qué modos estoy usando actualmente
- 3. Vim: cómo obtener el modo Actualmente estoy en
- 4. Consultas actualmente en ejecución en SQL Server
- 5. transacción Sql - SQL Server o C#?
- 6. ¿Por qué SQL Server entró en modo de usuario único?
- 7. Modo de compatibilidad de SQL Server
- 8. SQL Server 2005: interbloqueo de transacción
- 9. Transacción de SQL Server y instrucción SELECT
- 10. SQL Server: transacción de procedimiento almacenado
- 11. ¿Cómo puedo cambiar del modo Windows de SQL Server al modo mixto (SQL Server 2008)?
- 12. Sql server COMMIT sin Tran | ¿Transacción?
- 13. TransactionInDoubtException usando System.Transactions en SQL Server 2005
- 14. En Django, ¿cómo sé el usuario que está conectado actualmente?
- 15. ¿Cómo sé qué recomendaciones de índice de SQL Server 2005 implementar, si hay alguna?
- 16. ¿Cómo puedo ver los parámetros de los procesos en ejecución actualmente en SQL Server 2008
- 17. ¿Qué versión de C++ estoy usando?
- 18. ¿Cómo sé en qué iteración estoy cuando uso el método Integer.times?
- 19. ¿Un bloque de transacción reduce el rendimiento en SQL Server?
- 20. Qué supervisar en SQL Server
- 21. Sql Server 2008 Sintonización de grandes transacciones (700k + filas/transacción)
- 22. Usando una base de datos .MDF SQL Server con ASP.NET versus usando SQL Server
- 23. transacciones anidadas en SQL Server
- 24. ¿Cómo escapo _ en SQL Server?
- 25. Sesión de SQL Server
- 26. JPA Ninguna transacción está actualmente activa
- 27. Sql Server 2000 - ¿Cómo puedo averiguar qué procedimientos almacenados se están ejecutando actualmente?
- 28. ¿Qué comando SVN puedo usar para ver la rama que estoy usando actualmente?
- 29. Transacción de SQL Server 2008, ¿se requiere reversión?
- 30. SQL Server 2005: ¿Por qué nombrar transacciones?
Creo que el mensaje' No transacción actual, modo autocommit (predeterminado) 'es un poco engañoso ya que el autocommit no es totalmente seguro en este punto, la conexión podría establecerse para transacciones implícitas pero dado que no emitido aún, no se ha iniciado ninguna transacción. – MaxiWheat