Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Skapar en användardefinierad händelse. Händelsen kan samlas in med hjälp av SQL Trace eller Extended Events.
Not
Den här lagrade proceduren är inte inaktuell. Alla andra SQL Trace-relaterade lagrade procedurer är inaktuella.
Transact-SQL syntaxkonventioner
Syntax
sp_trace_generateevent
[ @eventid = ] eventid
[ , [ @userinfo = ] N'userinfo' ]
[ , [ @userdata = ] userdata ]
[ ; ]
Argument
Viktig
Argument för utökade lagrade procedurer måste anges i den specifika ordning som beskrivs i avsnittet Syntax. Om parametrarna anges i fel ordning visas ett felmeddelande.
[ @eventid = ] eventid
ID:t för händelsen som ska utlösas.
@eventid är int, utan standard. ID:t måste finnas i intervallet från 82 till 91 inklusive. Det här intervallet representerar användardefinierade händelser. I SQL Trace använder du sp_trace_setevent för att lägga till en händelse med det här ID:t till en spårning för att samla in händelser med samma ID som utlöstes från den här lagrade proceduren.
[ @userinfo = ] "userinfo"
Den valfria användardefinierade strängen.
@userinfo är nvarchar(128), med standardvärdet NULL.
[ @userdata = ] userdata
Valfria användardefinierade data för händelsen.
@userdata är varbinary(8000), med standardvärdet 0x.
Returnera kodvärden
I följande tabell beskrivs de returkodsvärden som du kan få efter att den lagrade proceduren har slutförts.
| Returnera kod | Beskrivning |
|---|---|
0 |
Inget fel. |
1 |
Okänt fel. |
3 |
Den angivna händelsen är inte giltig. Händelsen kanske inte finns eller så är den inte lämplig för den lagrade proceduren. |
13 |
Slut på minne. Returneras när det inte finns tillräckligt med minne för att utföra den angivna åtgärden. |
Anmärkningar
Om du vill samla in de händelser som utlöstes av den här lagrade proceduren med hjälp av Extended Eventslägger du till händelsen user_info i en händelsesession. Mer information finns i CREATE EVENT SESSION. Händelsen user_info utlöses för alla användardefinierade händelse-ID-värden som skickas till parametern @eventid.
Endast ID-nummer för användardefinierade händelser kan användas med sp_trace_generateevent. Ett fel uppstår om något annat händelse-ID-nummer används.
Parametrarna för den här lagrade proceduren är strikt skrivna. Om datatypen för värdet som skickas till en parameter inte matchar den parameterdatatyp som anges i beskrivningen returnerar den lagrade proceduren ett fel.
sp_trace_generateevent utför många av de åtgärder som tidigare utfördes av xp_trace_* utökade lagrade procedurer. Använd sp_trace_generateevent i stället för xp_trace_generate_event.
Behörigheter
I SQL Server och i Azure SQL Managed Instance kräver ALTER TRACE behörighet. I Azure SQL Database kräver medlemskap i public databasrollen.
Exempel
I följande exempel utlöses en användardefinierad händelse när en rad infogas i en tabell. Händelsen innehåller data som infogats i tabellen.
Om du vill samla in händelsen som utlöstes av det här exemplet skapa en utökad händelsesession och inkludera händelsen user_info, eller skapa en SQL-spårning och inkludera händelsen 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 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"}]