sp_trace_setfilter(Transact-SQL)sp_trace_setfilter (Transact-SQL)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)아니요Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

추적에 필터를 적용합니다.Applies a filter to a trace. sp_trace_setfilter 중지 된 기존 추적 에서만 실행할 수 있습니다 (상태0).sp_trace_setfilter may be executed only on existing traces that are stopped (status is 0). SQL ServerSQL Server 이 저장된 프로시저 않거나 존재 하지 않는 추적에서 실행 되는 경우 오류가 반환 상태 않습니다 0합니다. returns an error if this stored procedure is executed on a trace that does not exist or whose status is not 0.

중요

Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다.This feature will be removed in a future version of Microsoft SQL Server. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 응용 프로그램은 수정하세요.Avoid using this feature in new development work, and plan to modify applications that currently use this feature. 확장 이벤트를 대신 사용하세요. Use Extended Events instead.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax


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

인수Arguments

[ @traceid= ] trace_id[ @traceid= ] trace_id
필터를 설정한 추적의 ID입니다.Is the ID of the trace to which the filter is set. trace_idint, 기본값은 없습니다.trace_id is int, with no default. 사용자가이 사용 trace_id 식별, 수정 및 추적 제어 하는 값입니다.The user employs this trace_id value to identify, modify, and control the trace.

[ @columnid= ] column_id[ @columnid= ] column_id
필터를 적용한 열의 ID입니다Is the ID of the column on which the filter is applied. column_idint, 기본값은 없습니다.column_id is int, with no default. 경우 column_id 이 NULL 이면 SQL ServerSQL Server 지정된 된 추적에 대 한 모든 필터를 지웁니다.If column_id is NULL, SQL ServerSQL Server clears all filters for the specified trace.

[ @logical_operator =] logical_operator[ @logical_operator = ] logical_operator
지정 하는지 여부를 AND (0) 또는 OR (1) 연산자가 적용 됩니다.Specifies whether the AND (0) or OR (1) operator is applied. logical_operatorint, 기본값은 없습니다.logical_operator is int, with no default.

[ @comparison_operator= ] comparison_operator[ @comparison_operator= ] comparison_operator
비교 유형을 지정합니다.Specifies the type of comparison to be made. comparison_operatorint, 기본값은 없습니다.comparison_operator is int, with no default. 비교 연산자 및 나타내는 값이 표에 나와 있습니다.The table contains the comparison operators and their representative values.

ValueValue 비교 연산자Comparison operator
00 =(같음)= (Equal)
11 <>(같지 않음)<> (Not Equal)
22 >(보다 큼)> (Greater Than)
33 <(보다 작음)< (Less Than)
44 >=(크거나 같음)>= (Greater Than Or Equal)
55 <=(작거나 같음)<= (Less Than Or Equal)
66 LIKELIKE
77 유사하지 않음NOT LIKE

[ @value= ] [ @value= ] value
필터링할 값을 지정합니다.Specifies the value on which to filter. 데이터 형식이 필터링 할 열의 데이터 형식과 일치 해야 합니다.The data type of value must match the data type of the column to be filtered. 예를 들어, 필터 된 개체 ID 열에 설정 된 경우는 int 데이터 형식을 해야 int합니다. 경우 nvarchar 또는 varbinary, 최대 길이는 8000 가질 수 있습니다.For example, if the filter is set on an Object ID column that is an int data type, value must be int. If value is nvarchar or varbinary, it can have a maximum length of 8000.

비교 연산자가 LIKE 또는 NOT LIKE일 경우 논리 연산자는 "%" 또는 LIKE 연산에 적합한 다른 필터를 포함할 수 있습니다.When the comparison operator is LIKE or NOT LIKE, the logical operator can include "%" or other filter appropriate for the LIKE operation.

NULL을 지정할 수 있습니다 필터링 하 여 NULL 열 값이 있는 이벤트를 제외 합니다.You can specify NULL for value to filter out events with NULL column values. 0 (= 같음) 및 1 (<> 같지 않음) 연산자는 NULL을 사용 하 여 유효 합니다.Only 0 (= Equal) and 1 (<> Not Equal) operators are valid with NULL. 이 경우 이러한 연산자는 Transact-SQLTransact-SQL IS NULL 및 IS NOT NULL 연산자와 같습니다.In this case, these operators are equivalent to the Transact-SQLTransact-SQL IS NULL and IS NOT NULL operators.

열 값의 범위 필터를 적용 하려면 sp_trace_setfilter 는 큰 보다-같음으로 한 번 두 번 실행 되어야 합니다 ('> =') 비교 연산자와 다른 시간으로는 작음 보다-같음 ('< =') 연산자 .To apply the filter between a range of column values, sp_trace_setfilter must be executed twice -- once with a greater-than-or-equals ('>=') comparison operator, and another time with a less-than-or-equals ('<=') operator.

데이터 열 데이터 형식에 대 한 자세한 내용은 참조는 SQL Server Event Class Reference합니다.For more information about data column data types, see the SQL Server Event Class Reference.

반환 코드 값Return Code Values

아래 표에서는 저장 프로시저가 완료된 후 사용자가 얻을 수 있는 코드 값을 설명합니다.The following table describes the code values that users may get following completion of the stored procedure.

반환 코드Return code DescriptionDescription
00 오류가 없습니다.No error.
1.1 알 수 없는 오류입니다.Unknown error.
22 추적이 현재 실행 중입니다.The trace is currently running. 지금 추적을 변경하변 오류가 발생합니다.Changing the trace at this time results in an error.
44 지정한 열이 유효하지 않습니다.The specified Column is not valid.
55 지정한 열을 필터링할 수 없습니다.The specified Column is not allowed for filtering. 이 값은 에서만 반환 sp_trace_setfilter합니다.This value is returned only from sp_trace_setfilter.
66 지정한 비교 연산자가 유효하지 않습니다.The specified Comparison Operator is not valid.
77 지정한 논리 연산자가 유효하지 않습니다.The specified Logical Operator is not valid.
99 지정한 추적 핸들이 유효하지 않습니다.The specified Trace Handle is not valid.
1313 메모리가 부족합니다.Out of memory. 지정한 동작을 수행할 메모리가 충분하지 않으면 반환됩니다.Returned when there is not enough memory to perform the specified action.
1616 함수가 이 추적에 유효하지 않습니다.The function is not valid for this trace.

주의Remarks

sp_trace_setfilterSQL ServerSQL Server 저장 대부분의 이전 버전에서 사용할 수 있는 확장된 저장된 프로시저 실행 하 던 작업을 수행 하는 프로시저 SQL ServerSQL Server합니다.sp_trace_setfilter is a SQL ServerSQL Server stored procedure that performs many of the actions previously executed by extended stored procedures available in earlier versions of SQL ServerSQL Server. 사용 하 여 sp_trace_setfilter 대신는 xp_trace_set*필터 확장 저장된 프로시저를 만들려면, 적용, 제거 또는 추적에 대 한 필터를 조작 합니다.Use sp_trace_setfilter instead of the xp_trace_set*filter extended stored procedures to create, apply, remove, or manipulate filters on traces. 자세한 내용은 참조 추적 필터링합니다.For more information, see Filter a Trace.

한 번 실행에서 특정 열에 대 한 모든 필터를 함께 사용할 수 있어야 sp_trace_setfilter합니다.All filters for a particular column must be enabled together in one execution of sp_trace_setfilter. 예를 들어 필터 두 개를 응용 프로그램 이름 열에, 그리고 필터 하나를 사용자 이름 열에 적용하려면 응용 프로그램 이름에 필터를 차례로 지정해야 합니다.For example, if a user intends to apply two filters on the application name column and one filter on the username column, the user must specify the filters on application name in sequence. 한 번의 저장 프로시저 호출에서 응용 프로그램 이름에 필터 하나를 지정한 다음 사용자 이름에 필터를 지정하고 응용 프로그램 이름에 나머지 필터 하나를 지정하려고 하면 SQL ServerSQL Server에서 오류를 반환합니다. SQL ServerSQL Server returns an error if the user attempts to specify a filter on application name in one stored procedure call, followed by a filter on username, then another filter on application name.

모든 SQL 추적의 매개 변수 저장 프로시저 (sp_trace_xx) 엄격 하 게 지정 합니다.Parameters of all SQL Trace stored procedures (sp_trace_xx) are strictly typed. 이러한 매개 변수를 인수 설명에 지정된 올바른 입력 매개 변수 데이터 형식으로 호출하지 않으면 저장 프로시저가 오류를 반환합니다.If these parameters are not called with the correct input parameter data types, as specified in the argument description, the stored procedure returns an error.

PermissionsPermissions

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

Examples

다음 예에서는 추적 1에 필터 3개를 설정합니다.The following example sets three filters on Trace 1. N'SQLT%'N'MS%' 필터는 한 열(AppName, 값 10)에서 "LIKE" 비교 연산자를 사용하여 실행됩니다.The filters N'SQLT%' and N'MS%' operate on one column (AppName, value 10) using the "LIKE" comparison operator. N'joe' 필터는 다른 열(UserName, 값 11)에서 "EQUAL" 비교 연산자를 사용하여 실행됩니다.The filter N'joe' operates on a different column (UserName, value 11) using the "EQUAL" comparison operator.

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';  

관련 항목:See Also

sys.fn_trace_getfilterinfo(Transact-SQL) sys.fn_trace_getfilterinfo (Transact-SQL)
sys.fn_trace_getinfo(Transact-SQL) sys.fn_trace_getinfo (Transact-SQL)
SQL 추적SQL Trace