Condividi tramite


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