sp_trace_generateevent(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

사용자 정의 이벤트를 만듭니다. SQL 추적 또는 확장 이벤트를 사용하여 이벤트를 수집할 수 있습니다.

참고 항목

이 저장 프로시저는 더 이상 사용되지 않습니다 . 다른 모든 SQL 추적 관련 저장 프로시저는 더 이상 사용되지 않습니다.

Transact-SQL 구문 표기 규칙

구문

sp_trace_generateevent
    [ @eventid = ] eventid
    [ , [ @userinfo = ] N'userinfo' ]
    [ , [ @userdata = ] userdata ]
[ ; ]

인수

[ @eventid = ] eventid

발생하려는 이벤트의 ID입니다. @eventid 기본값이 없는 int입니다. ID는 포함 범위여야 8291 합니다. 이 범위는 사용자 정의 이벤트를 나타냅니다. SQL Trace에서 sp_trace_setevent 사용하여 이 ID가 있는 이벤트를 추적에 추가하여 이 저장 프로시저에서 발생한 ID와 동일한 ID로 이벤트를 캡처합니다.

[ @userinfo = ] 'userinfo'

선택적 사용자 정의 문자열입니다. @userinfo 기본값NULL인 nvarchar(128)입니다.

[ @userdata = ] userdata

이벤트에 대한 선택적 사용자 정의 데이터입니다. @userdata varbinary(8000)이며 기본값은 .입니다0x.

반환 코드 값

다음 표에서는 저장 프로시저가 완료된 후 사용자가 가져올 수 있는 반환 코드 값에 대해 설명합니다.

반환 코드 설명
0 오류가 없습니다.
1 알 수 없는 오류입니다.
3 지정한 이벤트가 잘못되었습니다. 이벤트가 없거나 저장 프로시저에 적합하지 않을 수 있습니다.
13 메모리가 부족합니다. 메모리가 부족하여 지정된 작업을 수행할 수 없을 때 반환됩니다.

설명

확장 이벤트를 사용하여 이 저장 프로시저에서 발생하는 이벤트를 캡처하려면 이벤트 세션에 user_info 이벤트를 추가합니다. 자세한 내용은 CREATE EVENT SESSION을 참조 하세요. 매개 user_info 변수에 전달된 사용자 정의 이벤트 ID 값에 @eventid 대해 이벤트가 발생합니다.

사용자 정의 이벤트의 ID 번호만 .와 함께 sp_trace_generateevent사용할 수 있습니다. 다른 이벤트 ID 번호를 사용하는 경우 오류가 발생합니다.

이 저장 프로시저의 매개 변수는 엄격하게 입력됩니다. 매개 변수에 전달된 값의 데이터 형식이 해당 설명에 지정된 매개 변수 데이터 형식과 일치하지 않으면 저장 프로시저에서 오류를 반환합니다.

sp_trace_generateevent 는 확장 저장 프로시저에서 이전에 실행한 xp_trace_* 많은 작업을 수행합니다. sp_trace_generateevent 대신 xp_trace_generate_event를 사용합니다.

사용 권한

SQL Server 및 Azure SQL Managed Instance에서 사용 권한이 필요합니다 ALTER TRACE . Azure SQL Database에서 데이터베이스 역할의 public 멤버 자격이 필요합니다.

예제

다음 예제에서는 행이 테이블에 삽입될 때 사용자 정의 이벤트를 발생합니다. 이벤트에는 테이블에 삽입된 데이터가 포함됩니다.

이 예제 에서 발생한 이벤트를 수집하려면 확장 이벤트 세션을 만들고 이벤트를 포함 user_info 하거나 SQL 추적 을 만들고 이벤트를 포함합니다 UserConfigurable:0 .

-- Create a table
DROP TABLE IF EXISTS dbo.user_defined_event_example;

CREATE TABLE dbo.user_defined_event_example
(
Id int IDENTITY(1,1) PRIMARY KEY,
Data nvarchar(60) NOT NULL
);

DROP TRIGGER IF EXISTS fire_user_defined_event;
GO

-- Create an insert trigger on the table
CREATE TRIGGER fire_user_defined_event ON dbo.user_defined_event_example
FOR INSERT
AS
DECLARE @EventData varbinary(8000);

-- Convert inserted rows to JSON and cast it as a binary value
SELECT @EventData = CAST((
                         SELECT Id, Data
                         FROM inserted
                         FOR JSON AUTO
                         ) AS varbinary(8000));

-- Fire the event with the payload carrying inserted rows as JSON
EXEC dbo.sp_trace_generateevent
    @eventid = 82,
    @userinfo = N'Inserted rows into dbo.user_defined_event_example',
    @userdata = @EventData;
GO

-- Insert a row into the table. The trigger fires the event.
INSERT INTO dbo.user_defined_event_example (Data)
VALUES (N'Example data');

-- Copy the binary payload from the event and cast it to a string with the JSON value
SELECT CAST(0x5B007B0022004900640022003A0031002C002200440061007400610022003A0022004500780061006D0070006C0065002000640061007400610022007D005D00 AS nvarchar(max));
-- This returns: [{"Id":1,"Data":"Example data"}]