본문 바로가기
Programming/C#

세션의 SET 옵션 확인하기

세션의 SET 옵션 확인하기

세션의 현재 SET 옵션에 대한 정보를 확인하려면 @@OPTIONS함수를 사용합니다.

제 PC에서 확인해보니 5496이라는 값이 나오는군요.
근데 5496이면 어떤 옵션이 설정되어 있을까요?
MSDN에서는 NOCOUNT 옵션이 설정되어 있는지 확인하기 위해 다음과 같은 방법을 사용합니다.
1
2
3
SET NOCOUNT ON
IF @@OPTIONS & 512 > 0
RAISERROR ('Current user has SET NOCOUNT turned on.', 1, 1)
NOCOUNT에 해당하는 구성 값이 512이므로 512로 비트 AND 연산을 합니다. 각 구성옵션에 해당 하는 값은 MSDN user options 서버 구성 옵션 구성 항목에서 확인할 수 있습니다. 보다 쉽게 옵션을 확인하는 방법은 @@OPTIONS 리턴값을 이진수로 바꾼다음 각 비트가 1인지 확인하는 것입니다. 다음은 한번에 SET 옵션을 확인하는 방법입니다. 이진수로 바꾸는 방법은 여기를 참조하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DECLARE @OPTION VARCHAR(32)
SET @OPTION = REVERSE(DBO.FUNC_DEC2BIN(@@OPTIONS))
 
PRINT 'SET DISABLE_DEF_CNST_CHK ' + CASE WHEN SUBSTRING(@OPTION, 1, 1) = '1' THEN 'ON' ELSE 'OFF' END
PRINT 'SET IMPLICIT_TRANSACTIONS ' + CASE WHEN SUBSTRING(@OPTION, 2, 1) = '1' THEN 'ON' ELSE 'OFF' END
PRINT 'SET CURSOR_CLOSE_ON_COMMIT ' + CASE WHEN SUBSTRING(@OPTION, 3, 1) = '1' THEN 'ON' ELSE 'OFF' END
PRINT 'SET ANSI_WARNINGS ' + CASE WHEN SUBSTRING(@OPTION, 4, 1) = '1' THEN 'ON' ELSE 'OFF' END
PRINT 'SET ANSI_PADDING ' + CASE WHEN SUBSTRING(@OPTION, 5, 1) = '1' THEN 'ON' ELSE 'OFF' END
PRINT 'SET ANSI_NULLS ' + CASE WHEN SUBSTRING(@OPTION, 6, 1) = '1' THEN 'ON' ELSE 'OFF' END
PRINT 'SET ARITHABORT ' + CASE WHEN SUBSTRING(@OPTION, 7, 1) = '1' THEN 'ON' ELSE 'OFF' END
PRINT 'SET ARITHIGNORE ' + CASE WHEN SUBSTRING(@OPTION, 8, 1) = '1' THEN 'ON' ELSE 'OFF' END
PRINT 'SET QUOTED_IDENTIFIER ' + CASE WHEN SUBSTRING(@OPTION, 9, 1) = '1' THEN 'ON' ELSE 'OFF' END
PRINT 'SET NOCOUNT ' + CASE WHEN SUBSTRING(@OPTION, 10, 1) = '1' THEN 'ON' ELSE 'OFF' END
PRINT 'SET ANSI_NULL_DFLT_ON ' + CASE WHEN SUBSTRING(@OPTION, 11, 1) = '1' THEN 'ON' ELSE 'OFF' END
PRINT 'SET ANSI_NULL_DFLT_OFF ' + CASE WHEN SUBSTRING(@OPTION, 12, 1) = '1' THEN 'ON' ELSE 'OFF' END
PRINT 'SET CONCAT_NULL_YIELDS_NULL ' + CASE WHEN SUBSTRING(@OPTION, 13, 1) = '1' THEN 'ON' ELSE 'OFF' END
PRINT 'SET NUMERIC_ROUNDABORT ' + CASE WHEN SUBSTRING(@OPTION, 14, 1) = '1' THEN 'ON' ELSE 'OFF' END
PRINT 'SET XACT_ABORT ' + CASE WHEN SUBSTRING(@OPTION, 15, 1) = '1' THEN 'ON' ELSE 'OFF' END
제 컴퓨터에서 실행했을때 결과입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SET DISABLE_DEF_CNST_CHK OFF
SET IMPLICIT_TRANSACTIONS OFF
SET CURSOR_CLOSE_ON_COMMIT OFF
SET ANSI_WARNINGS ON
SET ANSI_PADDING ON
SET ANSI_NULLS ON
SET ARITHABORT ON
SET ARITHIGNORE OFF
SET QUOTED_IDENTIFIER ON
SET NOCOUNT OFF
SET ANSI_NULL_DFLT_ON ON
SET ANSI_NULL_DFLT_OFF OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET NUMERIC_ROUNDABORT OFF
SET XACT_ABORT OFF


 

'Programming > C#' 카테고리의 다른 글

OOP 설계의 기본 원칙 SOLID  (0) 2019.09.15
테스트 자동화  (0) 2019.09.13
닷넷에서 오라클에 접근하는 7가지 방법  (0) 2017.12.08
LinqToDataSet Helper  (0) 2017.09.29
ObjectDumper Class  (0) 2017.09.23