sp_trace_generateevent (Transact-SQL)
platí pro:SQL Server
Azure SQL Database
azure SQL Managed Instance
Vytvoří uživatelem definovanou událost. Událost lze shromažďovat pomocí trasování SQL nebo rozšířených událostí.
Poznámka
Tato uložená procedura není zastaralá. Všechny ostatní uložené procedury související se službou SQL Trace jsou zastaralé.
Syntax
sp_trace_generateevent
[ @eventid = ] eventid
[ , [ @userinfo = ] N'userinfo' ]
[ , [ @userdata = ] userdata ]
[ ; ]
Argumenty
Důležitý
Argumenty rozšířených uložených procedur musí být zadány v určitém pořadí, jak je popsáno v části Syntaxe. Pokud jsou parametry zadány mimo pořadí, dojde k chybové zprávě.
[ @eventid = ] id události
ID události, která se má aktivovat.
@eventid je , bez výchozího nastavení. ID musí být v rozsahu od 82
až po 91
včetně. Tento rozsah představuje uživatelem definované události. V nástroji SQL Trace použijte sp_trace_setevent k přidání události s tímto ID do trasování za účelem zachycení událostí se stejným ID aktivovaným z této uložené procedury.
[ @userinfo = ] 'userinfo'
Volitelný uživatelem definovaný řetězec.
@userinfo je nvarchar(128), s výchozím NULL
.
[ @userdata = ] userdata
Volitelná uživatelsky definovaná data události.
@userdata je varbinary(8000), s výchozím 0x
.
Návratové hodnoty kódu
Následující tabulka popisuje návratové hodnoty kódu, které můžete získat po dokončení uložené procedury.
Návratový kód | Popis |
---|---|
0 |
Žádná chyba. |
1 |
Neznámá chyba. |
3 |
Zadaná událost není platná. Událost nemusí existovat nebo není vhodná pro uloženou proceduru. |
13 |
Nedostatek paměti. Vráceno, pokud není dostatek paměti k provedení zadané akce. |
Poznámky
Chcete-li zachytit události aktivované touto uloženou procedurou pomocí rozšířených událostí, přidejte událost user_info
do relace události. Další informace naleznete v tématu CREATE EVENT SESSION. Událost user_info
se aktivuje pro libovolnou hodnotu ID události definovanou uživatelem předanou parametru @eventid
.
S sp_trace_generateevent
lze použít pouze čísla ID událostí definovaných uživatelem. Pokud se použije nějaké jiné číslo ID události, vyvolá se chyba.
Parametry této uložené procedury jsou výhradně zadané. Pokud datový typ hodnoty předané parametru neodpovídá datovému typu parametru zadanému v popisu, vrátí uložená procedura chybu.
sp_trace_generateevent
provádí mnoho akcí, které dříve provedl xp_trace_*
rozšířených uložených procedur. Místo xp_trace_generate_event
použijte sp_trace_generateevent
.
Dovolení
V SQL Serveru a ve službě Azure SQL Managed Instance vyžaduje ALTER TRACE
oprávnění. Ve službě Azure SQL Database vyžaduje členství v roli databáze public
.
Příklady
Následující příklad aktivuje událost definovanou uživatelem při vložení řádku do tabulky. Událost obsahuje data vložená do tabulky.
Pokud chcete shromáždit událost aktivovanou tímto příkladem, vytvořit rozšířenou relaci událostí a zahrnout událost user_info
nebo vytvořit trasování SQL a zahrnout událost 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"}]
Související obsah
- VYTVOŘENÍ RELACE UDÁLOSTÍ (Transact-SQL)
- přehled rozšířených událostí
- sys.fn_trace_geteventinfo (Transact-SQL)
- sp_trace_setevent (Transact-SQL)
- trasování SQL