Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Cria um evento definido pelo usuário. O evento pode ser coletado usando de Rastreamento SQL ou Extended Events.
Observação
Este procedimento armazenado não preterido. Todos os outros procedimentos armazenados relacionados ao Rastreamento SQL foram preteridos.
Transact-SQL convenções de sintaxe
Sintaxe
sp_trace_generateevent
[ @eventid = ] eventid
[ , [ @userinfo = ] N'userinfo' ]
[ , [ @userdata = ] userdata ]
[ ; ]
Argumentos
Importante
Os argumentos para procedimentos armazenados estendidos devem ser inseridos na ordem específica, conforme descrito na seção de sintaxe. Se os parâmetros forem inseridos fora de ordem, ocorrerá uma mensagem de erro.
[ @eventid = ] eventid
A ID do evento a ser acionado.
@eventid é int, sem padrão. O ID deve estar no intervalo de 82 a 91 inclusive. Esse intervalo representa eventos definidos pelo usuário. No Rastreamento SQL, use sp_trace_setevent para adicionar um evento com essa ID a um rastreamento para capturar eventos com a mesma ID disparada a partir deste procedimento armazenado.
[ @userinfo = ] 'informação do utilizador'
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 de 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 |
Sem 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 este procedimento armazenado usando Extended Events, adicione o evento user_info a uma sessão de evento. Para obter mais informações, consulte CREATE EVENT SESSION. O evento user_info é disparado para qualquer valor de ID de evento definido pelo usuário passado para o parâmetro @eventid.
Somente números de ID de eventos definidos pelo usuário podem ser usados com sp_trace_generateevent. Um erro é gerado se qualquer outro número de ID de evento for usado.
Os parâmetros deste procedimento armazenado são estritamente digitados. 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 pelo 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 do SQL do Azure, requer a permissão ALTER TRACE. No Banco de Dados SQL do Azure, requer associação à função de banco de dados public.
Exemplos
O exemplo a seguir dispara 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, criar uma sessão de evento estendida e incluir o evento user_info ou criar uma de rastreamento SQL e incluir o 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 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"}]