[SQL] 어떻게 현재의 트랜잭션 (transaction) 레벨을 찾는 방법은?
SQL어떻게 현재의 트랜잭션 (transaction) 레벨을 찾는 방법은?
어떻게 SQL Server에서 현재 데이터베이스 트랜잭션 수준에서 찾을 수 있습니까?
해결법
-
==============================
1.이 프로그램을 실행 :
이 프로그램을 실행 :
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
상수의 값 docs.microsoft.com 참조.
-
==============================
2.단지 DBCC의 useroptions를 실행하고 이런 식으로 뭔가를 얻을 수 있습니다 :
단지 DBCC의 useroptions를 실행하고 이런 식으로 뭔가를 얻을 수 있습니다 :
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
-
==============================
3.
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();
-
==============================
4.
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
-
==============================
5.현재 트랜잭션 중첩 수준에 대해 이야기하는 경우에, 당신은 @@ TRANCOUNT를 사용합니다.
현재 트랜잭션 중첩 수준에 대해 이야기하는 경우에, 당신은 @@ TRANCOUNT를 사용합니다.
당신은 트랜잭션 격리 수준에 대해 이야기하는 경우, 분리 레벨의 옵션에 대해 DBCC USEROPTIONS과 모양을 사용합니다. 이 설정되지 않은 경우, 그것의 읽기 최선을 다하고 있습니다.
from https://stackoverflow.com/questions/1038113/how-to-find-current-transaction-level by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 두 열의 조합에 고유 제한 조건을 추가 (0) | 2020.04.09 |
---|---|
[SQL] 어떻게 여러 열에서 중복을 찾을 수 있습니까? (0) | 2020.04.09 |
[SQL] 참조 별칭은 WHERE 절에서 (SELECT에서 계산) (0) | 2020.04.09 |
[SQL] 어떻게 PowerShell을에서 SQL Server 쿼리를 실행합니까? (0) | 2020.04.09 |
[SQL] MySQL의 쿼리에서 숫자로 변환 텍스트 (0) | 2020.04.09 |