transaction transacciones solucion registro niveles log_backup log lleno limpiar está ejemplos debido datos begin aislamiento sql sql-server sql-server-2005 sql-server-2008

sql - transacciones - ¿Cómo encontrar el nivel de transacción actual?



limpiar log de transacciones sql server (5)

Ejecuta esto:

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

referencia docs.microsoft.com para los valores constantes .

¿Cómo se encuentra el nivel de transacción de la base de datos actual en SQL Server?


Si está hablando del nivel actual de anidación de transacciones, entonces usaría @@TRANCOUNT .

Si está hablando de nivel de aislamiento de transacción, use DBCC USEROPTIONS y busque una opción de nivel de aislamiento . Si no está configurado, se lee confirmado .


solo ejecute las 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


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


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();