글
추적 플래그
추적 플래그는 데이터베이스의 기본 설정 사항의 변경이나 숨겨진 서버 내부의 행위들의 관찰을 위해 임시로 설정하는 것이다. 그리고 이 설정값은 사용자가 직접 설정을 해제하거나 SQL Server가 재시작 될때까지 유지된다. 대부분의 추적 플래그는 문서화 되지 않았으며 SQL Server의 버전, 서비스팩, 핫픽스에 따라 그 내용이 바뀔 수 있음을 유념해야 한다.
추적 플래그는 SQL Server의 시작시 -Ttrace# 옵션을 사용하여 설정하거나 DBCC TRACEON 명령어를 이용하여 설정 가능하다. 어느 방법이든지 추적 플래그는 SQL Server가 재시작 하거나 DBCC TRACEOFF 명령을 사용하여 추적 플래그가 해제될 때까지 서버에 설정된 상태로 유지된다.
추적 플래그는 숨겨진 문제나 실제로 서버 내부에서 어떤 일이 일어 났는지 판단할 수 있는 좋은 도구가 될 수 있다. 하지만 문서화 되지 않은 추적 플래그를 실제 운영 환경에 사용하기 전에 신중히 조사할 것을 권고한다.(현재 SQL Server 2000 BOL에는 추적 플래그 230, 1204, 2528, 3205 만이 문서화 되어있다.) 일부 추적 플래그의 현재 속성들은 마이크로소프트의 기술 문서를 참고하면 도움이 될 것이다.
아래의 표는 Transact-SQL Language Reference Guide 에서 옮겨온 것이며, 설명된 속성들은 일부 현재 문서화된(BOL에) 것과 문서화되지 않은 추적 플래그로 SQL Server 7.0 and 2000 에서 사용 가능하다.
-1 | 추적 플래그를 현재 클라이언트 한명에게만 적용하는 것이 아니라, 서버에 연결된 모든 클라이언트에게 적용한다. -T command-line 옵션을 사용 해야지만 자동으로 서버의 모든 연결마다 추적 플래그를 적용할 수 있지만, 이 추적 플래그를 이용하면 DBCC TRACEON 와 DBCC TRACEOFF 명령을 이용하여 모든 연결마다 추적 플래그를 적용할 수 있다. |
106 | 문법 오류가 났을 때 오류가 난 구문의 라인 번호를 출력하지 않는다. |
107 | decimal형 수를 해석할 때 decimal형 대신에 float형을 사용한다. |
205 | 통계 기반(statistics-dependent)의 저장 프로시저가 통계정보가 자동으로 업데이트 됨으로 인해 재컴파일 될 때 알려준다. |
206 | setuser 명령문에 대한 하위 호환성을 제공 |
208 | SET QUOTED IDENTIFIER ON. |
242 | Non-ANSI-standard 형태의 결과가 기대되는 상관된 하위 쿼리에 대한 하위 호환성 제공 |
243 | SQL Server 가 보다도 무결성을 갖추게 되는데, 이는 널허용성(nullability) 검사가 런-타임시에 이루어 지고 널허용성 위배로 해당 명령을 끝내게 되고 배치 작업 혹은 트랜젝션 작업은 계속되기 때문이다. |
244 | 가(假)무결성 위배 검사(interim constraint violation)를 하지 않도록 한다. 기본적으로, SQL Server는 가(假)무결성 위배 검사를 하고 이를 허용한다. SQL Server 는 가(假)무결성 위배검사를 자기참조 DELETE 명령과, INSERT 명령, 그리고 다중 행 DELETE 명령에서 한다. 이 검사 작업은 더 많은 작업 테이블(work tables)을 요하게 된다. 이 추적 플래그로 가(假)무결성 위배검사를 허용하지 않을 수 있고 따라서 작은 작업 테이블을 요하게 된다. |
257 | XML 문서로 결과를 출력할때(주:SELECT 구문에서 FOR XML 절을 이용) 보다 읽기 쉬운 형태로 만들어 준다. |
260 | 확장 프로시저 Dll에 대한 버전 정보 출력한다 |
302 | 통계 페이지 사용 여부에 대한 정보, 가능 하다면 실제 선택성(selectivity)에 대한 정보, 그리고 SQL Server가 어떤 인덱스에 대한 물리적, 논리적 I/O에 대해 평가 했는지에 대한 정보를 출력한다. 추적 플래그 302는 반드시 추적 플래그 310과 함께 사용하여 실제 조인 순서를 보이도록 해야한다. |
310 | 조인 순서에 대한 정보를 출력한다. 인덱스 선택에 대한 정보는 SET SHOWPLAN_ALL 구문을 사용하여 보다 읽기쉬운 형태로 출력 가능하다. |
325 | 넌클러스터 인덱스 사용에 대한 비용이나 ORDER BY 절로 인한 정렬 작업의 비용에 대한 정보를 출력한다. |
326 | 정렬 작업의 비용에 대해 추정값과 실제 비용을 각각 출력한다. |
330 | SET SHOWPLAN_ALL 구문을 사용할때 조인에 대한 상세 정보를 포함하도록 모든 정보를 출력하도록 한다. |
506 | 변수와 매개변수의 비교시 널(null) 값에 관한 SQL-92 표준을 강요하게 된다. 어떤 변수와 파라미터의 비교시에도 널 값을 가지고 있다면 항상 결과는 널이 된다. (주:SET ANSI_NULLS OFF 명령을 무시하고 무조건 SET ANSI_NULLS ON으로 동작하도록 합니다.) |
652 | 서버의 미리 읽기(read ahead) 동작을 중지한다. |
653 | 현재 연결에 대해서만 미리 읽기(read ahead) 동작을 중지한다. |
809 | SQL Server 2000에서 지연된 쓰기 동작의 양을 제한한다. |
1180 | 스토리지의 효율적인 사용을 위해 text형 혹은 image형의 데이터를 할당할때 여분의 페이지를 이용하도록 한다. |
1200 | 잠금 정보를 출력한다.(프로세스 ID와 잠금의 종류) |
1204 | 데드락을 유발한 잠금의 종류와 데드락에 영향을 준 명령문을 돌려준다. |
1205 | 데드락이 유발된 시점에서 실행된 명령문의 자세한 정보를 돌려준다. |
1206 | 플래그 1204에 보완적으로 사용하여 데드락에 참여한 다른 잠금의 정보를 출력한다. |
1609 | 개방형 데이터 서비스(Open Data Services)에서 원격 프로시저 호출(RPC) 정보를 검사하고 데이터를 원래대로 돌려놓도록 한다. 응용 프로그램에서 과거 버젼과의 호환성에 관만 문제에서만 사용 |
1704 | 임시 테이블이 생성되거나 삭제(Drop) 될 때 알려준다. |
1807 | 네트웍 기반의 데이터베이스 파일을 사용할 수 있도록 한다. |
2505 | 오류 로그에 SPID 10 오류가 나타날 경우 DBCC TRACEON 208 실행을 막는다. |
2508 | DBCC CHECKTABLE 명령을 사용하여 병렬 넌클러스터 인덱스의 검사를 허용하지 않는다. |
2509 | DBCC CHECKTABLE 명령을 사용할 때 테이블에 있는 총 고스트 레코드의 수를 보여준다. |
2528 | DBCC 명령에 의한 오브젝의 병렬 검사를 허용하지 않는다. |
2701 | 심각도 10 이하의 오류 메세지에 대해서도 @@ERROR 시스템 함수가 50000 을 반환하도록 한다. 이 플래그가 비활성화되어 있다면, 심각도 10 이하의 오류 메세지에 대해서는 @@ERROR 시스템 함수가 0 을 반환한다. |
3104 | SQL Server로 하여금 여분의 공간(free space) 검사를 하지 않도록 한다. |
3111 | 백업과 복원 작업 도중 LogMgr::ValidateBackedupBlock 작업이 생략되도록 한다. |
3205 | 테이프 드라이버에 대한 하드웨어 압축을 해제한다. |
3222 | 복구 작업시 미리 읽기 동작을 중지한다. |
3502 | 검사점(checkpoint)의 시작과 끝에서 로그에 메세지를 출력한다. |
3503 | 자동 복구의 끝 검사점(checkpoint)에서 복구가 생략되었는지 여부를 알려준다. (읽기전용의 데이터베이스에만 적용할 수 있다) |
3602 | 모든 오류 메세지와 경고 메시지를 사용자(client)에게 보낸다. |
3604 | 추적 결과를 사용자(client)에게 보낸다. 이 추적 플래그는 DBCC TRACEON 명령과 DBCC TRACEOFF 명령을만 이용해서 설정 가능하다. |
3605 | 추적 결과를 오류 로그에 남긴다. (SQL Server를 코멘트 라인에서 실행하여 시작하였으면, 결과는 화면에도 보이게 된다) |
3607 | (서버 시작시) 모든 데이터베이스에 대해 자동 복구를 실행하지 않는다. |
3608 | (서버 시작시) Master 데이터베이스를 제외한 모든 데이터베이스에 대해 자동 복구를 실행하지 않는다. |
3609 | 데이터베이스 구동시 tempdb 생성을 생략한다. tempdb가 속한 장치에 문제가 있을경우 이 추적 플래그를 사용하라 |
3626 | CPU 데이터의 추적을 활성화 한다.(sysprocesses 테이블) |
3640 | 저장 프로시저에서 클라인트에게 DONE_IN_PROC 메시지를 보내지 않는다. SET NOCOUNT ON 구문을 이용하여 같은 결과를 얻을 수 있으나, 추적 플래그 3640을 이용하면 모든 세션의 클라이언트에게서 SET NOCOUNT ON 설정없이 같은 결과를 얻을 수 있다. |
4022 | 자동으로 시작되는 저장 프로시저를 실행하지 않는다. |
4030 | 수신된 버퍼의 내용을 아스키(ASCII) 문자와 함께 바이트 코드까지 함께 출력한다. 클라언트가 서버로 보낸 쿼리의 내용을 보고자 할 때 사용하라. 이 추적 플래그를 이용해서 보호 위반 사항이나 문제를 일으킨 문장을 확인할 수 있다. 일반적으로 이 플래그는 전역으로 설정하거나 SQL Server 엔터프라이즈 관리자를 이용해 설정할 수 있다. 또한 DBCC INPUTBUFFER 를 이용할 수 있다. |
4031 | 송신될 버퍼의 내용을 아스키(ASCII) 문자와 함께 바이트 코드까지 함께 출력한다. (클라이언트에게 보내는 내용) 또한 DBCC OUTPUTBUFFER 를 사용할 수 있다. |
4032 | 클라이언트로 부터 오는 SQL 명령을 추적한다. 추적 플래그 3605/3604 를 함께 사용하면 결과를 확인할 수 있다. |
7300 | 분산쿼리(distributed query)의 실행할 때 발생한 오류에 대한 확장 정보를 검색한다. |
7501 | 전진 전용 커서 사용시 기본으로 동적 커서를 사용한다. 동적 커서는 초기 버전보다 더 빠르게 동작 하고 더 이상 고유 인덱스(unique indexe)를 필요로 하지 않는다. 이 추적 플래그는 동적 커서의 기능적 향상점 이용하지 않고 SQL Server 6.0 버젼의 내용으로 되돌린다. |
7502 | 확장 저장 프로시저에 대해 커서 계획(cursor plan)의 캐시를 사용하지 않는다. |
7505 | dbcursorfetchex 호출시 반환하는 코드의 처리와 커서의 결과 셋에서 커서가 마지막 위치에서 다음 위치로 옮겨 갈때의 처리를 SQL Server 6.x 방식을 따르도록 활성화 한다. |
7525 | SQL Server 2000에서 SET CURSOR_CLOSE_ON_COMMIT 구문에 상관 없이 비-정적인 커서의 설정을 SQL Server 7.0의 내용으로 되돌린다. |
8202 | 게시자가 모든 UPDATE 명령을 DELETE/INSERT 쌍으로 복제한다. |
8207 | 트랜젝션 복제에서 싱글톤 업데이트(singleton update)를 사용한다. SQL Server 2000 Service Pack 1에서 릴리즈. |
8599 | 분산 쿼리에서 저장점(savepoint)을 지정할 수 있다. |
8679 | SQL Server의 최적화 프로그램이 해시 일치 팀(Hash Match Team) 연산자를 사용하는 것을 막는다. |
8687 | 병행 쿼리의 사용을 못 한다. |
8721 | AutoStat가 실행 되었을 때 오류 로그에 기록을 남긴다. |
8783 | SET ROWCOUNT ON 설정이 활성화 되었을 때 DELETE, INSERT, UPDATE 구문의 실행을 허용 |
8816 |
모든 2자리 연도 표기를 4자리의 연도 표기로 바꾼 내용을 기록한다. |
출처 : http://cafe.naver.com/cadwebdesign/28
추적 플래그 시작 매개변수로 지정하는 방법
SQL 구성관리자 - SQL Server Service - SQL Server 인스턴스 - SQL Server(이름) - 속성 - 고급 - 시작매개변수
'MSSQL 2008 > 기타' 카테고리의 다른 글
COLLATION 관련 내용 (329) | 2015.08.11 |
---|---|
데이터 타입(2Byte짜리 글자가 깨질 때) (0) | 2015.08.10 |
MSSQL 서버이름 변경, 서버명 변경 (0) | 2015.07.16 |
SET SINGLE_USER WITH ROLLBACK IMMEDIATE (0) | 2014.01.22 |
시스템 데이터 베이스 (0) | 2014.01.05 |