Megosztás a következőn keresztül:


sp_trace_generateevent (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Felhasználó által definiált eseményt hoz létre. Az esemény összegyűjthető SQL Trace vagy Bővített eseményekhasználatával.

Jegyzet

Ez a tárolt eljárás nem elavult. Minden más SQL Trace-hez kapcsolódó tárolt eljárás elavult.

Transact-SQL szintaxis konvenciói

Szintaxis

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

Érvek

Fontos

A kiterjesztett tárolt eljárások argumentumait a Szintaxis szakaszban leírt sorrendben kell megadni. Ha a paraméterek sorrenden kívül vannak beírva, hibaüzenet jelenik meg.

[ @eventid = ] eventid

A aktiválni kívánt esemény azonosítója. @eventidint, alapértelmezés nélkül. Az azonosítónak a 82 és 91 közötti tartományban kell lennie. Ez a tartomány a felhasználó által meghatározott eseményeket jelöli. Az SQL Trace-ben az sp_trace_setevent használatával adjon hozzá egy ilyen azonosítóval rendelkező eseményt egy nyomkövetéshez, hogy rögzítse azokat az eseményeket, amelyeket ugyanazzal az azonosítóval aktivált a tárolt eljárás.

[ @userinfo = ] 'userinfo'

A felhasználó által megadott opcionális sztring. @userinfonvarchar(128), alapértelmezett értéke NULL.

[ @userdata = ] Userdata

Az esemény felhasználó által nem kötelezően megadott adatai. @userdatavarbinary(8000), alapértelmezett értéke 0x.

Kódértékek visszaadása

Az alábbi táblázat a tárolt eljárás befejezését követően lekérhető visszatérési kódértékeket ismerteti.

Kód visszaadása Leírás
0 Nincs hiba.
1 Ismeretlen hiba.
3 A megadott esemény érvénytelen. Előfordulhat, hogy az esemény nem létezik, vagy nem megfelelő a tárolt eljáráshoz.
13 Nincs memóriája. Akkor adja vissza, ha nincs elegendő memória a megadott művelet végrehajtásához.

Megjegyzések

A tárolt eljárás által aktivált események Bővített eseményekhasználatával történő rögzítéséhez adja hozzá a user_info eseményt egy esemény munkamenethez. További információ: CREATE EVENT SESSION. A user_info esemény a @eventid paraméternek átadott felhasználó által megadott eseményazonosító-érték esetén aktiválódik.

Csak a felhasználó által megadott események azonosítószáma használható sp_trace_generateevent. Hibaüzenet jelenik meg, ha bármilyen más eseményazonosítót használ.

A tárolt eljárás paraméterei szigorúan be vannak állítva. Ha a paraméternek átadott érték adattípusa nem egyezik meg a leírásban megadott paraméter-adattípussal, a tárolt eljárás hibát ad vissza.

sp_trace_generateevent végrehajtja a xp_trace_* kiterjesztett tárolt eljárások által korábban végrehajtott műveletek nagy részét. sp_trace_generateeventhelyett használja xp_trace_generate_event.

Engedélyek

Az SQL Serverben és a felügyelt Azure SQL-példányban ALTER TRACE engedélyre van szükség. Az Azure SQL Database-ben tagságra van szükség a public adatbázis-szerepkörben.

Példák

Az alábbi példa egy felhasználó által definiált eseményt aktivál, amikor egy sor be van szúrva egy táblába. Az esemény a táblába beszúrt adatokat tartalmazza.

A példában aktivált esemény gyűjtéséhez hozzon létre egy kiterjesztett esemény munkamenetet, és vegye fel a user_info eseményt, vagy hozzon létre egy SQL-nyomkövetési, és vegye fel a UserConfigurable:0 eseményt.

-- 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 AS 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
              EXECUTE 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"}]