¿Cómo se encuentra el nivel de transacción de la base de datos actual en SQL Server?¿Cómo encontrar el nivel de transacción actual?
Respuesta
Ejecutar este:
SELECT CASE transaction_isolation_level
WHEN 0 THEN 'Unspecified'
WHEN 1 THEN 'ReadUncommitted'
WHEN 2 THEN 'ReadCommitted'
WHEN 3 THEN 'Repeatable'
WHEN 4 THEN 'Serializable'
WHEN 5 THEN 'Snapshot' END AS TRANSACTION_ISOLATION_LEVEL
FROM sys.dm_exec_sessions
where session_id = @@SPID
Si está hablando de la transacción actual anidando nivel, entonces usaría @@TRANCOUNT
.
Si usted está hablando de transacción nivel de aislamiento, utilice DBCC USEROPTIONS
y buscar una opción de nivel de aislamiento . Si no está configurado, es leer confirmado.
También hay que tener en cuenta DBCC USEROPTIONS es una opción increíble para encontrar el nivel de aislamiento de su SESIÓN, pero puede ser complicado: si su código cambia el nivel de aislamiento por transacción, esos períodos de tiempo donde el aislamiento el nivel es diferente de la sesión predeterminada puede ser difícil de capturar. Por ejemplo, si abre su sesión con el nivel de aislamiento x, pero cambia el nivel de aislamiento a y durante la duración de una transacción específica dentro de la sesión, los USEROPTIONS de DBCC no le darán visibilidad si se llama fuera de esa transacción. – DCaugs
En SQL Server 2012 el "nivel de aislamiento" de 'DBCC USEROPTIONS' se establece en" read committed " –
DECLARE @UserOptions TABLE(SetOption varchar(100), Value varchar(100))
DECLARE @IsolationLevel varchar(100)
INSERT @UserOptions
EXEC('DBCC USEROPTIONS WITH NO_INFOMSGS')
SELECT @IsolationLevel = Value
FROM @UserOptions
WHERE SetOption = 'isolation level'
-- Do whatever you want with the variable here...
PRINT @IsolationLevel
Éste no funciona en SQL Azure – Ronny
+1 ya que también imprime 'snapshot' cuando se usa junto con w/read cometido (y no el mecanismo de bloqueo compartido predeterminado) –
esto es exagerado, solo haga USUARIOS DBCC como thiagoh dice – user1075613
SELECT CASE
WHEN transaction_isolation_level = 1
THEN 'READ UNCOMMITTED'
WHEN transaction_isolation_level = 2
AND is_read_committed_snapshot_on = 1
THEN 'READ COMMITTED SNAPSHOT'
WHEN transaction_isolation_level = 2
AND is_read_committed_snapshot_on = 0 THEN 'READ COMMITTED'
WHEN transaction_isolation_level = 3
THEN 'REPEATABLE READ'
WHEN transaction_isolation_level = 4
THEN 'SERIALIZABLE'
WHEN transaction_isolation_level = 5
THEN 'SNAPSHOT'
ELSE NULL
END AS TRANSACTION_ISOLATION_LEVEL
FROM sys.dm_exec_sessions AS s
CROSS JOIN sys.databases AS d
WHERE session_id = @@SPID
AND d.database_id = DB_ID();
Por favor, también elabore en el código para ser más educativo. – lpapp
basta con ejecutar DBCC useroptions
y obtendrá algo como esto:
Set Option Value
--------------------------- --------------
textsize 2147483647
language us_english
dateformat mdy
datefirst 7
lock_timeout -1
quoted_identifier SET
arithabort SET
ansi_null_dflt_on SET
ansi_warnings SET
ansi_padding SET
ansi_nulls SET
concat_null_yields_null SET
isolation level read committed
y señala "leer instantánea confirmada" cuando está activo (ver instantánea RC vs bloqueado), al menos en SQL Server 2008 – user1075613
- 1. Cómo encontrar el estado de la transacción
- 2. Nivel de transacción, nolock/readpast y concurrencia
- 3. Nivel de aislamiento en Sql Transacción
- 4. ¿Cómo obtener programáticamente el nivel de audio actual?
- 5. ¿Cómo puedo obtener el nivel de zoom actual en UIScrollView?
- 6. ¿Cómo puedo encontrar el terminal virtual actual
- 7. ¿Cómo puedo encontrar el servidor DNS actual?
- 8. ¿Cómo puedo cambiar el NIVEL DE AISLAMIENTO DE TRANSACCIÓN predeterminado en SQL Server 2005?
- 9. Establecer nivel de aislamiento de transacción de mysql
- 10. PSQLException: transacción actual se aborta, comandos ignorados hasta el final del bloque de transacción
- 11. Nivel de transacción personalizado en Delphi DBX firebird
- 12. PGError: ERROR: la transacción actual se cancela
- 13. ¿Cómo establecer el nivel de aislamiento de transacción usando la conexión de ActiveRecord? [recomendar una gema]
- 14. ¿Cuál es la diferencia entre una transacción SQL en el nivel de procedimiento almacenado y una en el nivel SqlConnection?
- 15. ¿Cómo puedo encontrar el idioma de Windows actual de cmd?
- 16. Obtenga el nivel de confianza de ASP.NET actual programáticamente
- 17. ¿Cómo configuro el nivel de aislamiento de transacción en SQLAlchemy para PostgreSQL?
- 18. Encontrar el nivel de llamada de recursión en python
- 19. Cómo depurar: se aborta Error interno transacción actual, los comandos ignorado hasta el final del bloque de transacción
- 20. ¿Cómo puedo encontrar el nombre de archivo ejecutable actual?
- 21. obtener el nivel de volumen del sistema actual en iPhone
- 22. ¿Cómo determino programáticamente el nivel de zoom actual de una ventana del navegador?
- 23. encontrar niños de primer nivel en rieles de nokogiri
- 24. Cómo encontrar su ubicación actual con CoreLocation
- 25. En Selenio, ¿cómo puedo encontrar el objeto "Actual"
- 26. ¿Cómo encontrar el día actual del año en PHP?
- 27. ¿Cómo encontrar un día actual en el idioma c?
- 28. ¿Cómo puedo encontrar el sistema operativo actual en Python?
- 29. Encontrar el número de página actual en jqGrid
- 30. ¿Cuál es el nivel de aislamiento de transacción predeterminado para SQL Server con ADO.NET?
Éste sí funciona en SQL Azure :-) – Ronny
Éste no es exacto si el nivel de aislamiento es" read_commited_snapshot ". En este caso, solo mostrará "Readcommited". – GaTechThomas
@GaTechThomas, 'READ_COMMITTED_SNAPSHOT' no es el nivel de aislamiento, es la opción de una base de datos que permite cambiar el comportamiento del' para toda la base –