추적 플래그(Transact-SQL)
추적 플래그는 특정 서버의 특성을 임시로 설정하거나 특정 동작을 중지시키는 데 사용합니다. 예를 들어 SQL Server 인스턴스가 시작될 때 추적 플래그 3205가 설정되면 테이프 드라이버의 하드웨어 압축을 사용할 수 없습니다. 추적 플래그는 주로 성능 문제를 진단하거나 저장 프로시저 또는 복잡한 컴퓨터 시스템을 디버깅하는 데 사용됩니다.
다음 표에서는 SQL Server에서 사용할 수 있는 추적 플래그와 그에 대한 설명을 보여 줍니다.
[!참고]
SQL Server의 이후 릴리스에서는 추적 플래그 동작이 지원되지 않을 수도 있습니다.
추적 플래그 |
설명 |
---|---|
260 |
확장 저장 프로시저 동적 연결 라이브러리(DLL)에 대한 버전 관리 정보를 인쇄합니다. __GetXpVersion()에 대한 자세한 내용은 확장 저장 프로시저 만들기를 참조하십시오. 범위: 전역 또는 세션 |
1204 |
교착 상태에 있는 잠금의 유형과 리소스 및 현재 영향을 받은 명령을 반환합니다. 범위: 전역에만 해당 |
1211 |
메모리 가중이나 잠금 수를 기반으로 잠금 에스컬레이션을 해제합니다. SQL Server 데이터베이스 엔진에서는 행 또는 페이지 잠금을 테이블 잠금으로 에스컬레이션하지 않습니다. 이 추적 플래그를 사용하면 과도하게 많은 잠금이 생성될 수 있습니다. 이로 인해 데이터베이스 엔진의 성능이 저하되거나 메모리가 부족하게 되어 잠금 리소스를 할당할 수 없는 1204 오류가 발생할 수 있습니다. 자세한 내용은 잠금 에스컬레이션(데이터베이스 엔진)을 참조하십시오. 추적 플래그 1211과 1224를 모두 설정하면 1211이 1224보다 우선 적용됩니다. 그러나 추적 플래그 1211은 메모리 부족 등의 모든 경우에서 에스컬레이션을 차단하므로 1224를 사용하는 것이 좋습니다. 이렇게 하면 많은 잠금을 사용할 때 "잠금 부족" 오류를 방지하는 데 도움이 됩니다. 범위: 전역 또는 세션 |
1222 |
교착 상태에 있는 잠금 유형과 리소스 및 현재 영향을 받은 명령을 XSD 스키마에 맞지 않는 XML 형식으로 반환합니다. 범위:전역에만 해당 |
1224 |
잠금 수를 기반으로 잠금 에스컬레이션을 해제합니다. 그러나 메모리 가중으로 잠금 에스컬레이션이 활성화될 수 있습니다. 데이터베이스 엔진은 잠금 개체에 사용되는 메모리 양이 다음 조건 중 하나를 초과하면 행 또는 페이지 잠금을 테이블(또는 파티션) 잠금으로 에스컬레이션합니다.
추적 플래그 1211과 1224를 모두 설정하면 1211이 1224보다 우선 적용됩니다. 그러나 추적 플래그 1211은 메모리 부족 등의 모든 경우에서 에스컬레이션을 차단하므로 1224를 사용하는 것이 좋습니다. 이렇게 하면 많은 잠금을 사용할 때 "잠금 부족" 오류를 방지하는 데 도움이 됩니다.
참고
테이블 또는 HoBT 수준 세분성에 대한 잠금 에스컬레이션은 ALTER TABLE 문의 LOCK_ESCALATION 옵션을 사용하여 제어할 수도 있습니다.
범위: 전역 또는 세션 |
2528 |
DBCC CHECKDB, DBCC CHECKFILEGROUP 및 DBCC CHECKTABLE에 의한 개체 병렬 확인을 해제합니다. 기본적으로 쿼리 프로세서가 자동으로 병렬 처리 수준을 결정합니다. 최대 병렬 처리 수준은 병렬 쿼리의 경우처럼 구성됩니다. 자세한 내용은 max degree of parallelism 옵션을 참조하십시오. 일반적으로 병렬 DBCC는 사용 가능한 상태로 두어야 합니다. DBCC CHECKDB의 경우 쿼리 프로세서에서 병렬 처리를 다시 확인하고 확인된 각 테이블 또는 여러 테이블과 함께 자동으로 조정합니다. 서버가 거의 유휴 상태일 때 확인을 시작하는 경우도 있습니다. 관리자는 확인이 완료되기 전에 로드가 증가할 것을 알게 되면 수동으로 감소시키거나 병렬 처리를 해제해야 합니다. DBCC 병렬 검사를 해제하면 DBCC가 완료되는 데 훨씬 더 오랜 시간이 걸릴 수 있으며, TABLOCK 기능을 설정하고 병렬 처리를 해제한 상태로 DBCC를 실행하는 경우 테이블이 오랫동안 잠길 수 있습니다. 범위: 전역 또는 세션 |
3205 |
기본적으로 테이프 드라이브가 하드웨어 압축을 지원하면 DUMP 또는 BACKUP 문에서 하드웨어 압축을 사용합니다. 이 추적 플래그를 사용하면 테이프 드라이버에 대한 하드웨어 압축을 해제할 수 있습니다. 다른 사이트 또는 압축을 지원하지 않는 테이프 드라이브와 테이프를 교환할 때 유용합니다. 범위: 전역 또는 세션 |
3226 |
기본적으로 백업 작업을 성공적으로 수행할 때마다 SQL Server 오류 로그와 시스템 이벤트 로그에 항목이 추가됩니다. 로그 백업을 자주 만드는 경우 이러한 성공 메시지는 바로 누적되므로 엄청난 오류 로그가 쌓여 다른 메시지를 찾기 힘들 수 있습니다. 이 추적 플래그를 사용하면 이러한 로그 항목을 표시하지 않을 수 있습니다. 로그 백업을 자주 실행하거나 이러한 항목에 종속되는 스크립트가 없는 경우 이 추적 플래그를 사용하면 유용합니다. |
3608 |
SQL Server가 master 데이터베이스를 제외한 모든 데이터베이스를 자동으로 시작 및 복구하지 못하도록 방지합니다. 데이터베이스는 액세스될 때 시작 및 복구됩니다. 스냅숏 격리 및 커밋된 읽기 스냅숏과 같은 일부 기능은 작동하지 않을 수 있습니다. 시스템 데이터베이스 이동 및 사용자 데이터베이스 이동의 경우에 사용합니다. 정상적인 작업 중에는 사용하면 안 됩니다. |
3625 |
'******'를 사용하여 일부 오류 메시지의 매개 변수를 마스킹함으로써 sysadmin 고정 서버 역할의 멤버가 아닌 사용자에게 반환되는 정보의 양을 제한합니다. 이렇게 하면 중요한 정보의 노출을 막을 수 있습니다. 범위: 전역에만 해당 |
4199 |
여러 개의 추적 플래그가 지정된 상태에서 이전에 이루어진 여러 쿼리 최적화 프로그램 변경을 제어합니다. 자세한 내용은 Microsoft 고객 지원 문서를 참조하십시오. 범위: 전역 또는 세션 |
4616 |
응용 프로그램 역할이 서버 수준 메타데이터를 볼 수 있도록 합니다. SQL Server에서 응용 프로그램 역할은 서버 수준의 보안 주체와 연결되어 있지 않으므로 해당 데이터베이스 외부의 메타데이터에 액세스할 수 없습니다. 이 동작은 이전 버전의 SQL Server에서 변경되었습니다. 이 전역 플래그를 설정하면 새 제한 사항이 해제되므로 응용 프로그램 역할이 서버 수준 메타데이터에 액세스할 수 있습니다. 범위: 전역에만 해당 |
6527 |
CLR 통합에서 메모리 부족 예외가 처음 발생할 때 메모리 덤프가 생성되지 않도록 합니다. 기본적으로 SQL Server는 CLR에서 메모리 부족 예외가 처음 발생하면 작은 메모리 덤프를 생성합니다. 추적 플래그의 동작은 다음과 같습니다.
범위: 전역에만 해당 |
7806 |
SQL Server Express에 DAC(관리자 전용 연결)를 설정합니다. 기본적으로 SQL Server Express에는 DAC 리소스가 예약되어 있지 않습니다. 자세한 내용은 전용 관리자 연결 사용을 참조하십시오. 범위: 전역에만 해당 |
주의
SQL Server에는 세션 및 전역의 두 가지 추적 플래그 유형이 있습니다. 세션 추적 플래그는 특정 연결에 대해 설정되며 해당 연결에서만 볼 수 있습니다. 전역 추적 플래그는 서버 수준에서 설정되며 서버의 모든 연결에서 볼 수 있습니다. 전역으로만 설정할 수 있는 플래그도 있고 전역 또는 세션 범위에서 설정할 수 있는 플래그도 있습니다.
다음 규칙이 적용됩니다.
전역 추적 플래그는 전역으로 설정해야 합니다. 그렇지 않으면 추적 플래그가 적용되지 않습니다. 시작 시 -T 명령줄 옵션을 사용하여 전역 추적 플래그를 설정하는 것이 좋습니다.
추적 플래그의 범위가 전역 또는 세션이면 해당 범위로 추적 플래그를 설정할 수 있습니다. 세션 수준에서 설정된 추적 플래그는 다른 세션에 영향을 주지 않으며 해당 세션을 연 SPID가 로그아웃하면 추적 플래그의 효과가 사라집니다.
다음 방법 중 하나를 사용하여 추적 플래그를 설정하거나 해제합니다.
DBCC TRACEON 및 DBCC TRACEOFF 명령을 사용합니다.
예를 들어 DBCC TRACEON 2528의 경우 추적 플래그를 전역으로 설정하려면 과 같이 DBCC TRACEON에 -1 인수를 사용합니다. DBCC TRACEON (2528, -1). 전역 추적 플래그를 해제하려면 DBCC TRACEOFF에 -1 인수를 사용합니다.
-T 시작 옵션을 사용하여 시작하는 동안 추적 플래그가 설정되도록 지정합니다.
-T 시작 옵션을 사용하면 추적 플래그가 전역으로 설정됩니다. 시작 옵션을 사용하여 세션 수준 추적 플래그를 설정할 수는 없습니다. 시작 옵션에 대한 자세한 내용은 SQL Server 서비스 시작 옵션 사용을 참조하십시오.
DBCC TRACESTATUS 명령을 사용하여 현재 활성화되어 있는 추적 플래그를 확인할 수 있습니다.
동작 변경
SQL Server 2000에서는 간단한 DBCC TRACEON(1204)만으로 오류 로그에 교착 상태 보고를 설정할 수 있습니다. SQL Server 2008에서는 교착 상태 모니터 스레드에서 세션 수준 플래그를 볼 수 없기 때문에 플래그를 전역으로 설정해야 합니다.
동작 변경에 대한 자세한 내용은 SQL Server 2008 R2 데이터베이스 엔진 기능의 주요 변경 내용을 참조하십시오.
예
다음 예에서는 DBCC TRACEON을 사용하여 추적 플래그 3205를 설정합니다.
DBCC TRACEON (3205,-1)
참고 항목
참조
변경 내역
업데이트된 내용 |
---|
추적 플래그 4199를 추가했습니다. |