sp_trace_generateevent (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Cria um evento definido pelo usuário. O evento pode ser coletado usando o Rastreamento SQL ou Eventos Estendidos.
Observação
Esse procedimento armazenado não foi preterido. Todos os outros procedimentos armazenados relacionados ao Rastreamento do SQL foram preteridos.
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_trace_generateevent
[ @eventid = ] eventid
[ , [ @userinfo = ] N'userinfo' ]
[ , [ @userdata = ] userdata ]
[ ; ]
Argumentos
@eventid [ = ] eventid
A ID do evento a ser disparado. @eventid é int, sem padrão. A ID deve estar no intervalo de 82
até 91
inclusivo. Esse intervalo representa eventos definidos pelo usuário. No Rastreamento do SQL, use sp_trace_setevent para adicionar um evento com essa ID a um rastreamento para capturar eventos com a mesma ID disparada desse procedimento armazenado.
@userinfo [ = ] 'userinfo'
A cadeia de caracteres opcional definida pelo usuário. @userinfo é nvarchar(128), com um padrão de NULL
.
@userdata [ = ] dados do usuário
Os dados opcionais definidos pelo usuário para o evento. @userdata é varbinary(8000), com um padrão de 0x
.
Valores do código de retorno
A tabela a seguir descreve os valores de código de retorno que você pode obter, após a conclusão do procedimento armazenado.
Código de retorno | Descrição |
---|---|
0 |
Nenhum erro. |
1 |
Erro desconhecido. |
3 |
O evento especificado não é válido. O evento pode não existir ou não é apropriado para o procedimento armazenado. |
13 |
Sem memória. Retornado quando não há memória suficiente para executar a ação especificada. |
Comentários
Para capturar os eventos disparados por esse procedimento armazenado usando Eventos Estendidos, adicione o user_info
evento a uma sessão de evento. Para obter mais informações, consulte CREATE EVENT SESSION. O user_info
evento é acionado para qualquer valor de ID de evento definido pelo usuário passado para o @eventid
parâmetro.
Somente números de ID de eventos definidos pelo usuário podem ser usados com sp_trace_generateevent
o . Um erro será gerado se qualquer outro número de ID de evento for usado.
Os parâmetros desse procedimento armazenado são estritamente tipados. Se o tipo de dados do valor passado para um parâmetro não corresponder ao tipo de dados de parâmetro especificado em sua descrição, o procedimento armazenado retornará um erro.
sp_trace_generateevent
Executa muitas das ações executadas anteriormente pelos xp_trace_*
procedimentos armazenados estendidos. Use sp_trace_generateevent
em vez de xp_trace_generate_event
.
Permissões
No SQL Server e na Instância Gerenciada de SQL do Azure, requer a ALTER TRACE
permissão. No Banco de Dados SQL do Azure, requer associação public
na função de banco de dados.
Exemplos
O exemplo a seguir aciona um evento definido pelo usuário quando uma linha é inserida em uma tabela. O evento contém os dados inseridos na tabela.
Para coletar o evento disparado por este exemplo, crie uma sessão de evento estendida e inclua o user_info
evento ou crie um rastreamento SQL e inclua o UserConfigurable:0
evento.
-- 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"}]