sp_trace_generateevent (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
Crea un evento definito dall'utente. L'evento può essere raccolto usando traccia SQL o eventi estesi.
Nota
Questa stored procedure non è deprecata. Tutte le altre stored procedure correlate a Traccia SQL sono deprecate.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
sp_trace_generateevent
[ @eventid = ] eventid
[ , [ @userinfo = ] N'userinfo' ]
[ , [ @userdata = ] userdata ]
[ ; ]
Argomenti
[ @eventid = ] eventid
ID dell'evento da generare. @eventid è int, senza impostazione predefinita. L'ID deve essere compreso nell'intervallo compreso 82
91
tra l'altro. Questo intervallo rappresenta gli eventi definiti dall'utente. In Traccia SQL usare sp_trace_setevent per aggiungere un evento con questo ID a una traccia per acquisire eventi con lo stesso ID generato da questa stored procedure.
[ @userinfo = ] 'userinfo'
Stringa facoltativa definita dall'utente. @userinfo è nvarchar(128), con il valore predefinito NULL
.
[ @userdata = ] userdata
Dati facoltativi definiti dall'utente per l'evento. @userdata è varbinary(8000), con il valore predefinito 0x
.
Valori del codice restituito
Nella tabella seguente vengono descritti i valori di codice restituiti che è possibile ottenere, dopo il completamento della stored procedure.
Codice restituito | Descrizione |
---|---|
0 |
Nessun errore. |
1 |
Errore sconosciuto. |
3 |
L'evento specificato non è valido. L'evento potrebbe non esistere o non è appropriato per la stored procedure. |
13 |
Memoria esaurita. Restituito quando non è disponibile memoria sufficiente per eseguire l'azione specificata. |
Osservazioni:
Per acquisire gli eventi generati da questa stored procedure usando eventi estesi, aggiungere l'evento user_info
a una sessione eventi. Per altre informazioni, vedere CREATE EVENT SESSION. L'evento user_info
viene generato per qualsiasi valore id evento definito dall'utente passato al @eventid
parametro .
Con è possibile usare solo i numeri ID degli eventi definiti dall'utente con sp_trace_generateevent
. Se si utilizza un altro numero ID evento, viene generato un errore.
I parametri di questa stored procedure sono rigorosamente tipizzato. Se il tipo di dati del valore passato a un parametro non corrisponde al tipo di dati del parametro specificato nella descrizione, la stored procedure restituisce un errore.
sp_trace_generateevent
esegue molte delle azioni eseguite in precedenza dalle xp_trace_*
stored procedure estese. Usare sp_trace_generateevent
invece di xp_trace_generate_event
.
Autorizzazioni
In SQL Server e in Istanza gestita di SQL di Azure è necessaria l'autorizzazione ALTER TRACE
. In database SQL di Azure, richiede l'appartenenza al ruolo del public
database.
Esempi
Nell'esempio seguente viene generato un evento definito dall'utente quando una riga viene inserita in una tabella. L'evento contiene i dati inseriti nella tabella.
Per raccogliere l'evento generato da questo esempio, creare una sessione eventi estesa e includere l'evento user_info
oppure creare una traccia SQL e includere l'evento 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"}]