초급의 끄적거림

[MSSQL] ANSI_WARNING 정리 본문

DB/MSSQL

[MSSQL] ANSI_WARNING 정리

codingD 2020. 1. 29. 20:58

구문


SET ANSI_WARNINGS { ON | OFF }

 

조건에 적용

  ON 일 경우 OFF 일 경우

집계 함수에 NULL 값이 있을 때

경고 메세지 발생 경고 메세지 발생X

0으로 나누거나 산술 오버츨로 오류 발생

롤백되고 오류메세지 생성 NULL 반환

새 값의 길이가 열의 최대 크기를 초과하는 CHARACTER, UNICODE, BINARY 열에 INSERT 나 UPDATE 작업

INSERT나 UPDATE 취소 0으로 나누기 또는 산술 오버플로 오류로 인해 NULL 반환
문자열

후행 공백, 이진 열에 대해서는 후행

NULL 값이 무시

열의 크기에 맞게 데이터가 잘리고 문이 성공적으로 실행

 

참고


  • binary 또는 varbinary 데이터로 또는 그 역으로의 변환에서 잘림이 일어날 때는 set 옵션에 상관없이 경고나 오류가 생성되지 않음
  • 저장 프로시저 또는 사용자 정의 함수에 매개 변수를 전달할 때 또는 일괄 처리 문에서 변수를 선언하고 설정할 때 ANSI_WARNINGS 는 인식되지 않음
    • 예) 변수가 CHAR(3)으로 정의된 경우 3자보다 큰 값으로 설정하면 정의된 크기로 데이터가 잘리고 INSERT 또는 UPDATE 문이 성공함
  • sp_configure의 user options를 사용하여 서버의 모든 연결에 대해 ansi_warnings의 기본값을 설정가능
  • SET ANSI_WARINGS ON : 계산 열이나 인덱싱된 뷰에서 인덱스를 만들거나 조작할 때 / 분산쿼리 실행
  • SET ANSI_DEFAULTS ON이면 SET ANSI_WARNINGS 옵션이 설정
  • SET ANSI_WARNINGS 옵션 : 실행시, 또는 런타임에 설정며 구문 분석 시에는 설정되지 않음
  • SET ARITHABORT 옵션이나 SET ARITHIGNORE 옵션 중 하나가 OFF 이고, SET ANSI_WARNINGS 옵션이 ON이면 SQL Server 에서 0으로 나누기 또는 오버플로 오류가 발생할 경우 여전히 오류 메세지 반환

 

Comments