세션의 현재 SET 옵션에 대한 정보를 확인하려면 @@OPTIONS함수를 사용합니다. 제 PC에서 확인해보니 5496이라는 값이 나오는군요. 근데 5496이면 어떤 옵션이 설정되어 있을까요? MSDN에서는 NOCOUNT 옵션이 설정되어 있는지 확인하기 위해 다음과 같은 방법을 사용합니다.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 옵션을 확인하는 방법입니다. 이진수로 바꾸는 방법은 여기를 참조하세요.DECLARE @OPTION VARCHAR(32) SET @OPTION = RIGHT(master.DBO.FUNC_DEC2BIN(@@OPTIONS), 15) PRINT 'SET DISABLE_DEF_CNST_CHK ' + CASE WHEN SUBSTRING(@OPTION, 15, 1) = '1' THEN 'ON' ELSE 'OFF' END PRINT 'SET IMPLICIT_TRANSACTIONS ' + CASE WHEN SUBSTRING(@OPTION, 14, 1) = '1' THEN 'ON' ELSE 'OFF' END PRINT 'SET CURSOR_CLOSE_ON_COMMIT ' + CASE WHEN SUBSTRING(@OPTION, 13, 1) = '1' THEN 'ON' ELSE 'OFF' END PRINT 'SET ANSI_WARNINGS ' + CASE WHEN SUBSTRING(@OPTION, 12, 1) = '1' THEN 'ON' ELSE 'OFF' END PRINT 'SET ANSI_PADDING ' + CASE WHEN SUBSTRING(@OPTION, 11, 1) = '1' THEN 'ON' ELSE 'OFF' END PRINT 'SET ANSI_NULLS ' + CASE WHEN SUBSTRING(@OPTION, 10, 1) = '1' THEN 'ON' ELSE 'OFF' END PRINT 'SET ARITHABORT ' + CASE WHEN SUBSTRING(@OPTION, 9, 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, 7, 1) = '1' THEN 'ON' ELSE 'OFF' END PRINT 'SET NOCOUNT ' + CASE WHEN SUBSTRING(@OPTION, 6, 1) = '1' THEN 'ON' ELSE 'OFF' END PRINT 'SET ANSI_NULL_DFLT_ON ' + CASE WHEN SUBSTRING(@OPTION, 5, 1) = '1' THEN 'ON' ELSE 'OFF' END PRINT 'SET ANSI_NULL_DFLT_OFF ' + CASE WHEN SUBSTRING(@OPTION, 4, 1) = '1' THEN 'ON' ELSE 'OFF' END PRINT 'SET CONCAT_NULL_YIELDS_NULL ' + CASE WHEN SUBSTRING(@OPTION, 3, 1) = '1' THEN 'ON' ELSE 'OFF' END PRINT 'SET NUMERIC_ROUNDABORT ' + CASE WHEN SUBSTRING(@OPTION, 2, 1) = '1' THEN 'ON' ELSE 'OFF' END PRINT 'SET XACT_ABORT ' + CASE WHEN SUBSTRING(@OPTION, 1, 1) = '1' THEN 'ON' ELSE 'OFF' END제 컴퓨터에서 실행했을때 결과입니다.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
2014년 7월 14일 월요일
세션의 SET 옵션 확인하기
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기