sp_trace_setfilter(Transact-SQL)

추적에 필터를 적용합니다. sp_trace_setfilter는 중지된(status가 0인 경우) 기존 추적에서만 실행할 수 있습니다. status가 0이 아니거나 존재하지 않는 추적에 대해 이 저장 프로시저를 실행하면 SQL Server에서 오류를 반환합니다.

중요 정보중요

Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오. 대신 확장 이벤트를 사용하십시오.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

구문

sp_trace_setfilter [ @traceid = ] trace_id  
          , [ @columnid = ] column_id 
          , [ @logical_operator = ] logical_operator 
          , [ @comparison_operator = ] comparison_operator 
          , [ @value = ] value

인수

  • [ @traceid= ] trace_id
    필터를 설정한 추적의 ID입니다. trace_id는 int이며 기본값은 없습니다. 사용자는 이 trace_id 값을 사용하여 추적을 식별, 수정 및 제어할 수 있습니다.

  • [ @columnid= ] column_id
    필터를 적용한 열의 ID입니다 column_id는 int이며 기본값은 없습니다. column_id가 NULL이면 SQL Server에서는 지정한 추적에 대한 모든 필터를 지웁니다.

  • [ @logical_operator = ] logical_operator
    AND(0) 또는 OR(1) 연산자의 적용 여부를 지정합니다. logical_operator는 int이며 기본값은 없습니다.

  • [ @comparison_operator= ] comparison_operator
    비교 유형을 지정합니다. comparison_operator는 int이며 기본값은 없습니다. 비교 연산자 및 나타내는 값이 표에 나와 있습니다.

    비교 연산자

    0

    =(같음)

    1

    <>(같지 않음)

    2

    >(보다 큼)

    3

    <(보다 작음)

    4

    >=(크거나 같음)

    5

    <=(작거나 같음)

    6

    LIKE

    7

    NOT LIKE

  • [ @value= ] value
    필터링할 값을 지정합니다. value의 데이터 형식은 필터링할 열의 데이터 형식과 일치해야 합니다. 예를 들어 int 데이터 형식인 개체 ID 열에서 필터를 설정하면 value는 int여야 합니다. value가 nvarchar 또는 varbinary인 경우 최대 길이는 8000입니다.

    비교 연산자가 LIKE 또는 NOT LIKE일 경우 논리 연산자는 "%" 또는 LIKE 연산에 적합한 다른 필터를 포함할 수 있습니다.

    SQL Server 2005 이상에서는 value에 NULL을 지정하여 열 값이 NULL인 이벤트를 필터링하여 제외시킬 수 있습니다. 0(= 같음) 및 1(<> 같지 않음) 연산자만 NULL과 함께 사용할 수 있습니다. 이 경우 이러한 연산자는 Transact-SQL IS NULL 및 IS NOT NULL 연산자와 같습니다.

    열 값의 범위 사이에서 필터를 적용하려면 크거나 같음('>=') 비교 연산자와 작거나 같음('<=') 연산자를 사용하여 sp_trace_setfilter가 두 번 실행되어야 합니다.

    데이터 열 데이터 형식에 대한 자세한 내용은 SQL Server 이벤트 클래스 참조를 참조하십시오.

반환 코드 값

아래 표에서는 저장 프로시저가 완료된 후 사용자가 얻을 수 있는 코드 값을 설명합니다.

반환 코드

설명

0

오류가 없습니다.

1

알 수 없는 오류입니다.

2

추적이 현재 실행 중입니다. 지금 추적을 변경하변 오류가 발생합니다.

4

지정한 열이 유효하지 않습니다.

5

지정한 열을 필터링할 수 없습니다. 이 값은 sp_trace_setfilter에서만 반환됩니다.

6

지정한 비교 연산자가 유효하지 않습니다.

7

지정한 논리 연산자가 유효하지 않습니다.

9

지정한 추적 핸들이 유효하지 않습니다.

13

메모리가 부족합니다. 지정한 동작을 수행할 메모리가 충분하지 않으면 반환됩니다.

16

함수가 이 추적에 유효하지 않습니다.

주의

sp_trace_setfilter는 이전 버전의 SQL Server에서 사용 가능한 확장 저장 프로시저가 실행하던 대부분의 동작을 수행하는 SQL Server 저장 프로시저입니다. xp_trace_set*filter 확장 저장 프로시저 대신 sp_trace_setfilter를 사용하여 추적에서 필터를 만들고, 적용, 제거 또는 조작할 수 있습니다. 자세한 내용은 추적 필터링을 참조하십시오.

특정 열에 대한 모든 필터는 sp_trace_setfilter를 한 번 실행할 때 함께 설정되어야 합니다. 예를 들어 필터 두 개를 응용 프로그램 이름 열에, 그리고 필터 하나를 사용자 이름 열에 적용하려면 응용 프로그램 이름에 필터를 차례로 지정해야 합니다. 한 번의 저장 프로시저 호출에서 응용 프로그램 이름에 필터 하나를 지정한 다음 사용자 이름에 필터를 지정하고 응용 프로그램 이름에 나머지 필터 하나를 지정하려고 하면 SQL Server에서 오류를 반환합니다.

모든 SQL 추적 저장 프로시저(sp_trace_xx)의 매개 변수는 유형 지정이 엄격합니다. 이러한 매개 변수를 인수 설명에 지정된 올바른 입력 매개 변수 데이터 형식으로 호출하지 않으면 저장 프로시저가 오류를 반환합니다.

사용 권한

사용자는 ALTER TRACE 권한이 있어야 합니다.

다음 예에서는 추적 1에 필터 3개를 설정합니다. N'SQLT%' 및 N'MS%' 필터는 한 열(AppName, 값 10)에서 "LIKE" 비교 연산자를 사용하여 실행됩니다. N'joe' 필터는 다른 열(UserName, 값 11)에서 "EQUAL" 비교 연산자를 사용하여 실행됩니다.

sp_trace_setfilter  1, 10, 0, 6, N'SQLT%';
sp_trace_setfilter  1, 10, 0, 6, N'MS%';
sp_trace_setfilter  1, 11, 0, 0, N'joe';

참고 항목

참조

sys.fn_trace_getfilterinfo(Transact-SQL)

sys.fn_trace_getinfo (Transact-SQL)

개념

SQL 추적