본문 바로가기

DBMS/SQL Server

[SQL Server] SET 문

 

SET(Transact-SQL)

 

특정 정보를 처리하는 현재 세션을 변경할 있는 가지 SET 문을 제공

 

날짜 및 시간 문

SET DATEFIRST

일주일의 첫 번째 요일을 1부터 7까지의 숫자로 설정

SET DATEFORMAT

datetime 또는 smalldatetime 데이터 입력에 대한 날짜 부분의 

순서(//년도)를 설정

 

잠금 문

SET DEADLOCK_PRIORITY

현재 세션이 다른 세션과 교착 상태에 있는 경우 현재 세션이

계속 실행되도록 하는 상대적 중요도를 지정

SET LOCK_TIMEOUT

잠금이 해제될 때가지 문이 기다려야 할 시간(밀리초)지정.

-1(기본값)은 제한 시간이 없음(무기한 대기)
0
은 기다리지 않음을 나타내고 잠금이 있으면 바로

오류 메시지가 반

 

기타 문

SET CONCAT_NULL_YIELDS_NULL

연결된 결과를 Null 값 또는 빈 문자열 값으로 다룰 것인지

제어

SET CURSOR_CLOSE_ON_COMMIT

Transact-SQL COMMIT TRANSACTION 문의 동작을 제어.
기본값은 OFF. , 트랜잭션을 커밋할 때 서버가 커서를
닫지않음

SET DISABLE_DEF_CNST_CHK

이전 버전과의 호환성을 위해 포함

SET FIPS_FLAGGER

FIPS표준(미국연방정보처리기준)과의 호환성 확인을 지정

SET IDENTITY_INSERT

명시적 값을 테이블의 ID 열에 삽입할 수 있도록 함

SET LANGUAGE

세션에 대한 언어 환경을 지정. 세션 언어는 datetime 형식과

시스템 메시지를 결정

SET OFFSETS

지정한 키워드의 오프셋(명령문 시작에 대한 상대적 위치)반환

SET QUOTED_IDENTIFIER

OFF이면 문자열을 작은 따옴표,큰따옴표로 구분가능
문자열을 구분할때 큰 따옴표를 사용하면 아포스트로피

같은 작은 따옴표

 

쿼리 실행 문

SET ARITHABORT

ON이면 오버플로 또는 0으로 나누기 오류 발생 시 쿼리나

일괄 처리가 종료 트랜잭션에서 해당 오류가 발생하면 트랜잭션이

롤백. 그러나 이 설정이 INSERT, UPDATE, DELETE 문 실행 중에

발생한 오류에는 영향을 주지 않음

SET ARITHIGNORE

쿼리 실행 중 오버플로 또는 0으로 나누기 오류에서 오류 메시지를

반환할지 여부를 제어.
이 설정에 상관 없이 오버플로 또는 0으로 나누기 오류를
발생시킨

계산에 NULL을 반환

SET FMTONLY

클라이언트에게 메타데이터만 반환.
ON
으로 설정하면 어떤 행도 처리되거나 클라이언트에게

보내지지 않음
명령문 실행후 열정보만 반환되고 데이터행은 반환되지 않음

SET NOCOUNT

Transact-SQL 문의 영향을 받은 행 수를 나타내는 메시지가 

결과의 일부로 반환되지 않음

SET NOEXEC

각 쿼리를 컴파일하지만 실행하지는 않음.
코드의 개체 이름 유효성을 검사하도록 할 때 사용가능

SET NUMERIC_ROUNDABORT

식의 반올림에서 정밀도가 손실될 경우 생성되는 오류 보고의

수준을 지정
ON
으로 설정하면 식에서 정밀도 손실이 발생할 경우
오류가 생성
OFF
로 설정하면 정밀도 손실이 발생해도 오류 메시지가
생성되지

않으며 결과가 열 또는 결과를 저장한 변수의 정밀도로 반올림

SET PARSEONLY

구문을 검사한 후 문을 컴파일하거나 실행하지 않고

오류 메시지를 반환
프로시저나 트리거에서는 PARSEONLY를 사용하지 않음

SET QUERY_GOVERNOR_COST_LIMIT

쿼리가 실행될 수 있는 가장 긴 시간을 지정하는 숫자

또는 정수 값. 그값을 초과하는 예상 비용을 갖는 쿼리 실행

허용하지 않음

SET ROWCOUNT

지정한 행 수가 반환된 후 쿼리 처리를 중지하도록 함
이 옵션을 해제하려면SET ROWCOUNT 0을 지정

SET TEXTSIZE

SELECT 문을 실행해 반환된 text ntext 데이터의 크기를

지정. 기본값은 4kb이며 최대값은 2gb(0으로 설정->기본값)

 

통계 문

SET FORCEPLAN

쿼리 최적화 프로그램이 SELECT 문의 FROM 절에 테이블이 나타난

순서대로만 조인을 처리하도록 함. ON으로 설정하면 쿼리 계획을

구성하는 데 다른 유형의 조인이 필요하거나 조인 힌트 또는

쿼리 힌트로 요청되지 않은 경우 중첩 루프 조인이 강제로 사용
반환 데이터는 같고 테이블 처리하는 방법만 차이 있음

SET SHOWPLAN_ALL

Transact-SQL 문을 실행하지 않음. 대신 SQL Server가 문이 실행된

방법에 대한 자세한 정보를 반환하고 해당 명령문에 대한

예상 리소스 요구 사항을 제공

SET SHOWPLAN_TEXT

ON으로 설정하면 SQL Server가 각 Transact-SQL 문을 실행하지

않고 실행 정보만 반환

SET STATISTICS IO

 Transact-SQL 문이 생성한 디스크 작동 양 정보 표시
-
검색 수 :  실행된 검색 수
-
논리적 읽기 수 :  데이터 캐시에서 읽은 페이지 수
-
물리적 읽기 수 : 디스크에서 읽은 페이지 수입니다.
-
미리 읽기 수: 쿼리에 대해 캐시에 넣어진 페이지 수

- LOB
논리적 읽기 수 : 데이터 캐시에서 읽은 text,
 ntext, image

  또는 큰 값 유형(varchar(max), nvarchar(max), varbinary(max))

  의 페이지
- LOB
물리적 읽기 수 :  디스크에서 읽은 text, ntext, image 
또는

  큰 값 유형의 페이지 수
- LOB
미리 읽기 수 :  쿼리에 대해 캐시에 넣어진 text,
ntext,

  image 또는 큰 값 유형의 페이지 수

SET STATISTICS PROFILE

명령문에 대한 프로필 정보를 표시합니다. STATISTICS

PROFILE은 임의 쿼리, , 트리거 및 저장 프로시저에서 작동
- Rows:
각 연산자에서 만든 실제 행 수
- Exucutes :
연산자가 실행된 횟수

SET STATISTICS TIME

각 명령문을 구문 분석, 컴파일 및 실행하는 데 필요한 시간을 

밀리초 단위로 표시

 

트랜잭션 문

SET IMPLICIT_TRANSACTIONS

연결에 대해 암시적 트랜잭션 모드를 설정. OFF로 설정하면

연결이 다시 자동 커밋 트랜잭션 모드로 복귀

SET REMOTE_PROC_TRANSACTIONS

ON으로 설정하면 로컬 트랜잭션에서 원격 저장 프로시저를

실행할 때 Transact-SQL 분산 트랜잭션이 시작
OFF
로 설정할 경우 로컬 트랜잭션에서 원격 저장
프로시저를

호출해도 Transact-SQL 분산 트랜잭션이 시작되지 않음

SET TRANSACTION ISOLATION LEVEL

한 연결에서 실행한 모든  SELECT 문에 대해 기본 트랜잭션 

잠금 동작을 제어

① READ COMMITTED :
기본값
데이터를 읽을 때는 공유 잠금이 유지되도록 해서 커밋되지
않은

데이터 읽기가 이루어지지 않도록 지정하지만, 트랜잭션이 끝나기

전에 데이터가 변경되어 반복하지 않는 읽기 또는 팬텀 데이터가

만들어질 수 있음

② READ UNCOMMITTED :
불필요한 읽기나 격리 수준 0을 구현. 공유 잠금이
만들어지지

않고 단독 잠금 무시.
커밋되지 않는 데이터나 불필요한 데이터를 읽을 가능성
.
네가지 격지 수준 중 제한이 가장적음


③ REPEATABLE READ :
쿼리에서 사용되는 모든 데이터에 잠금을 배치해 다른
사용자가

데이터를 업데이트할 수 없도록하지만, 다른 사용자가

데이터 집합에 새 허위 행을 삽입해 현재 트랜잭션 이후 읽기에

포함 될 수 있도록함

④ SERIALIZABLE :
데이터 집합에 범위 잠금을 배치해 트랜잭션이 완료될
때까지

다른 사용자가 행을 업데이트하거나 데이터 집합에 삽입할 수

없도록 함. 가장 강한 격리 수준

SET XACT_ABORT

SQL 문에서 런타임 오류가 발생할 경우 자동으로 현재

트랜잭션을 롤백하게 할지 여부를 지정
ON
런타임 오류 발생시 트랜잭션 종료후 롤백 OFF 기본 설정.

오류의 심각도에 따라 전체 트랜잭션 롤백 가능성 있음

 

출처 : http://blog.naver.com/lovzip?Redirect=Log&logNo=20053246109