추적 플래그(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

잠금 수를 기반으로 잠금 에스컬레이션을 해제합니다. 그러나 메모리 가중으로 잠금 에스컬레이션이 활성화될 수 있습니다. 데이터베이스 엔진은 잠금 개체에 사용되는 메모리 양이 다음 조건 중 하나를 초과하면 행 또는 페이지 잠금을 테이블(또는 파티션) 잠금으로 에스컬레이션합니다.

  • 데이터베이스 엔진에서 사용하는 메모리의 40%입니다. sp_configurelocks 매개 변수가 0으로 설정된 경우에만 적용됩니다.

  • sp_configurelocks 매개 변수를 사용하여 구성된 잠금 메모리의 40%. 자세한 내용은 서버 구성 옵션를 참조하십시오.

추적 플래그 1211과 1224를 모두 설정하면 1211이 1224보다 우선 적용됩니다. 그러나 추적 플래그 1211은 메모리 부족 등의 모든 경우에서 에스컬레이션을 차단하므로 1224를 사용하는 것이 좋습니다. 이렇게 하면 많은 잠금을 사용할 때 "잠금 부족" 오류를 방지하는 데 도움이 됩니다.

[!참고]

테이블 또는 HoBT 수준 세분성에 대한 잠금 에스컬레이션은 ALTER TABLE 문의 LOCK_ESCALATION 옵션을 사용하여 제어할 수도 있습니다.

범위: 전역 또는 세션

1448

비동기 보조 복제본이 변경 내용 수신을 확인하지 않은 경우에도 복제 로그 판독기가 앞으로 진행하도록 설정합니다. 이 추적 플래그를 설정하면 로그 판독기가 항상 동기 보조 복제본을 기다립니다. 로그 판독기는 동기 보조 복제본에 대한 최소 승인을 넘지 않습니다. 이 추적 플래그는 단순히 가용성 그룹, 가용성 데이터베이스 또는 로그 판독기 인스턴스가 아니라 SQL Server 인스턴스에 적용됩니다. 다시 시작하지 않고 즉시 적용됩니다. 이 추적 플래그는 비동기 보조 복제본이 실패할 때 또는 미리 활성화할 수 있습니다.

2528

DBCC CHECKDB, DBCC CHECKFILEGROUP 및 DBCC CHECKTABLE에 의한 개체 병렬 확인을 해제합니다. 기본적으로 쿼리 프로세서가 자동으로 병렬 처리 수준을 결정합니다. 최대 병렬 처리 수준은 병렬 쿼리의 경우처럼 구성됩니다. 자세한 내용은 max degree of parallelism 서버 구성 옵션 구성를 참조하십시오.

일반적으로 병렬 DBCC는 사용 가능한 상태로 두어야 합니다. DBCC CHECKDB의 경우 쿼리 프로세서에서 병렬 처리를 다시 확인하고 확인된 각 테이블 또는 여러 테이블과 함께 자동으로 조정합니다. 서버가 거의 유휴 상태일 때 확인을 시작하는 경우도 있습니다. 관리자는 확인이 완료되기 전에 로드가 증가할 것을 알게 되면 수동으로 감소시키거나 병렬 처리를 해제해야 합니다.

DBCC 병렬 검사를 해제하면 DBCC가 완료되는 데 훨씬 더 오랜 시간이 걸릴 수 있으며, TABLOCK 기능을 설정하고 병렬 처리를 해제한 상태로 DBCC를 실행하는 경우 테이블이 오랫동안 잠길 수 있습니다.

범위: 전역 또는 세션

3042

백업 파일이 최종 크기에 도달하는 데 필요한 만큼만 늘어날 수 있도록 기본 백업 압축 사전 할당 알고리즘을 무시합니다. 이 추적 플래그는 압축된 백업에 실제로 필요한 크기만 할당하여 공간에 저장해야 하는 경우 유용합니다. 이 추적 플래그를 사용하면 약간의 성능 저하가 발생할 수 있습니다(백업 작업 시간이 늘어날 수 있음).

사전 할당 알고리즘에 대한 자세한 내용은 백업 압축(SQL Server)을 참조하십시오.

3205

기본적으로 테이프 드라이브가 하드웨어 압축을 지원하면 DUMP 또는 BACKUP 문에서 하드웨어 압축을 사용합니다. 이 추적 플래그를 사용하면 테이프 드라이버에 대한 하드웨어 압축을 해제할 수 있습니다. 다른 사이트 또는 압축을 지원하지 않는 테이프 드라이브와 테이프를 교환할 때 유용합니다.

범위: 전역 또는 세션

3226

기본적으로 백업 작업을 성공적으로 수행할 때마다 SQL Server 오류 로그와 시스템 이벤트 로그에 항목이 추가됩니다. 로그 백업을 자주 만드는 경우 이러한 성공 메시지는 바로 누적되므로 엄청난 오류 로그가 쌓여 다른 메시지를 찾기 힘들 수 있습니다.

이 추적 플래그를 사용하면 이러한 로그 항목을 표시하지 않을 수 있습니다. 로그 백업을 자주 실행하거나 이러한 항목에 종속되는 스크립트가 없는 경우 이 추적 플래그를 사용하면 유용합니다.

3608

SQL Server가 master 데이터베이스를 제외한 모든 데이터베이스를 자동으로 시작 및 복구하지 못하도록 방지합니다. tempdb가 필요한 작업이 시작되면 모델이 복구되고 tempdb가 만들어집니다. 사용자 데이터베이스는 액세스될 때 시작 및 복구됩니다. 스냅숏 격리 및 커밋된 읽기 스냅숏과 같은 일부 기능은 작동하지 않을 수 있습니다. 시스템 데이터베이스 이동사용자 데이터베이스 이동의 경우에 사용합니다. 정상적인 작업 중에는 사용하면 안 됩니다.

3625

'******'를 사용하여 일부 오류 메시지의 매개 변수를 마스킹함으로써 sysadmin 고정 서버 역할의 멤버가 아닌 사용자에게 반환되는 정보의 양을 제한합니다. 이렇게 하면 중요한 정보의 노출을 막을 수 있습니다.

범위: 전역에만 해당

4199

이전에 여러 추적 플래그를 통해 적용한 여러 쿼리 최적화 프로그램 변경 내용을 제어합니다. 자세한 내용은 이 Microsoft 지원 문서를 참조하십시오.

범위: 전역 또는 세션

4616

응용 프로그램 역할이 서버 수준 메타데이터를 볼 수 있도록 합니다. SQL Server에서 응용 프로그램 역할은 서버 수준의 보안 주체와 연결되어 있지 않으므로 해당 데이터베이스 외부의 메타데이터에 액세스할 수 없습니다. 이 동작은 이전 버전의 SQL Server에서 변경되었습니다. 이 전역 플래그를 설정하면 새 제한 사항이 해제되므로 응용 프로그램 역할이 서버 수준 메타데이터에 액세스할 수 있습니다.

범위: 전역에만 해당

6527

CLR 통합에서 메모리 부족 예외가 처음 발생할 때 메모리 덤프가 생성되지 않도록 합니다. 기본적으로 SQL Server는 CLR에서 메모리 부족 예외가 처음 발생하면 작은 메모리 덤프를 생성합니다. 추적 플래그의 동작은 다음과 같습니다.

  • 추적 플래그가 시작 추적 플래그로 사용되는 경우에는 메모리 덤프가 생성되지 않지만 다른 추적 플래그가 사용되는 경우에는 메모리 덤프가 생성될 수 있습니다.

  • 실행 중인 서버에 이 추적 플래그를 설정하면 해당 지점부터 메모리 덤프가 자동으로 생성되지 않습니다. 그러나 CLR의 메모리 부족 예외로 인해 메모리 덤프가 이미 생성된 경우에는 이 추적 플래그를 설정해도 아무런 효과가 없습니다.

범위: 전역에만 해당

7806

SQL Server Express에 DAC(관리자 전용 연결)를 설정합니다. 기본적으로 SQL Server Express에는 DAC 리소스가 예약되어 있지 않습니다. 자세한 내용은 데이터베이스 관리자를 위한 진단 연결를 참조하십시오.

범위: 전역에만 해당

8032

일반적으로 캐시가 더 커지도록 허용하는 SQL Server 2005 RTM 설정으로 캐시 제한 매개 변수를 복구합니다. 자주 재사용되는 캐시 항목이 캐시에 맞지 않고 optimize for ad hoc workloads 서버 구성 옵션으로 계획 캐시 관련 문제를 해결하지 못한 경우 이 설정을 사용합니다.

주의 사항주의

추적 플래그 8032는 대형 캐시로 버퍼 풀과 같은 다른 메모리 소비자에 제공되는 메모리가 줄어들 수 있는 성능 문제를 일으킬 수 있습니다.

8207

트랜잭션 복제에 대한 단일 업데이트를 설정할 수 있습니다. 구독자 업데이트는 DELETE 및 INSERT 쌍으로 복제할 수 있습니다. 이는 UPDATE 트리거 시작과 같은 비즈니스 규칙을 충족하지 못할 수 있습니다. 추적 플래그 8207를 통해 단일 행(단일 업데이트)에만 영향을 미치는 단일 열 업데이트는 UPDATE로 복제되며 DELETE 또는 INSERT 쌍으로 복제되지 않습니다. 업데이트가 UNIQUE 제약 조건을 갖고 있는 열에 영향을 주거나 업데이트가 여러 행에 영향을 주는 경우 업데이트는 여전히 DELETE 또는 INSERT 쌍으로 복제됩니다.

9485

DBCC SHOW_STATISTICS에 대해 SELECT 권한을 해제합니다.

주의

SQL Server에는 세션 및 전역의 두 가지 추적 플래그 유형이 있습니다. 세션 추적 플래그는 특정 연결에 대해 설정되며 해당 연결에서만 볼 수 있습니다. 전역 추적 플래그는 서버 수준에서 설정되며 서버의 모든 연결에서 볼 수 있습니다. 전역으로만 설정할 수 있는 플래그도 있고 전역 또는 세션 범위에서 설정할 수 있는 플래그도 있습니다.

다음 규칙이 적용됩니다.

  • 전역 추적 플래그는 전역으로 설정해야 합니다. 그렇지 않으면 추적 플래그가 적용되지 않습니다. 시작 시 -T 명령줄 옵션을 사용하여 전역 추적 플래그를 설정하는 것이 좋습니다.

  • 추적 플래그의 범위가 전역 또는 세션이면 해당 범위로 추적 플래그를 설정할 수 있습니다. 세션 수준에서 설정된 추적 플래그는 다른 세션에 영향을 주지 않으며 해당 세션을 연 SPID가 로그아웃하면 추적 플래그의 효과가 사라집니다.

다음 방법 중 하나를 사용하여 추적 플래그를 설정하거나 해제합니다.

  • DBCC TRACEON 및 DBCC TRACEOFF 명령을 사용합니다.

    예를 들면 DBCC TRACEON 2528:의 경우 추적 플래그를 전역으로 설정하려면 DBCC TRACEON (2528, -1). 전역 추적 플래그를 해제하려면 DBCC TRACEOFF에 -1 인수를 사용합니다.

  • -T 시작 옵션을 사용하여 시작하는 동안 추적 플래그가 설정되도록 지정합니다.

    -T 시작 옵션을 사용하면 추적 플래그가 전역으로 설정됩니다. 시작 옵션을 사용하여 세션 수준 추적 플래그를 설정할 수는 없습니다. 시작 옵션에 대한 자세한 내용은 데이터베이스 엔진 서비스 시작 옵션을 참조하십시오.

DBCC TRACESTATUS 명령을 사용하여 현재 활성화되어 있는 추적 플래그를 확인할 수 있습니다.

다음 예에서는 DBCC TRACEON을 사용하여 추적 플래그 3205를 설정합니다.

DBCC TRACEON (3205,-1)

참고 항목

참조

데이터 형식(Transact-SQL)

DBCC INPUTBUFFER(Transact-SQL)

DBCC OUTPUTBUFFER(Transact-SQL)

DBCC TRACEOFF(Transact-SQL)

DBCC TRACEON(Transact-SQL)

DBCC TRACESTATUS(Transact-SQL)

EXECUTE(Transact-SQL)

SELECT(Transact-SQL)

SET NOCOUNT(Transact-SQL)