sp_trace_generateevent(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance
사용자 정의 이벤트를 만듭니다. SQL 추적 또는 확장 이벤트를 사용하여 이벤트를 수집할 수 있습니다.
참고 항목
이 저장 프로시저는 더 이상 사용되지 않습니다 . 다른 모든 SQL 추적 관련 저장 프로시저는 더 이상 사용되지 않습니다.
구문
sp_trace_generateevent
[ @eventid = ] eventid
[ , [ @userinfo = ] N'userinfo' ]
[ , [ @userdata = ] userdata ]
[ ; ]
인수
[ @eventid = ] eventid
발생하려는 이벤트의 ID입니다. @eventid 기본값이 없는 int입니다. ID는 포함 범위여야 82
91
합니다. 이 범위는 사용자 정의 이벤트를 나타냅니다. 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"}]