Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Tworzy zdarzenie zdefiniowane przez użytkownika. Zdarzenie można zbierać przy użyciu śledzenia SQL lub zdarzeń rozszerzonych .
Nuta
Ta procedura składowana nie jest przestarzała. Wszystkie inne procedury składowane związane ze śledzeniem SQL są przestarzałe.
Transact-SQL konwencje składni
Składnia
sp_trace_generateevent
[ @eventid = ] eventid
[ , [ @userinfo = ] N'userinfo' ]
[ , [ @userdata = ] userdata ]
[ ; ]
Argumenty
Ważny
Argumenty dla rozszerzonych procedur składowanych należy wprowadzić w określonej kolejności zgodnie z opisem w sekcji składni. Jeśli parametry są wprowadzane poza kolejnością, wystąpi komunikat o błędzie.
[ @eventid = ] eventid
Identyfikator zdarzenia do wyzwolenia.
@eventid jest int bez wartości domyślnej. Identyfikator musi należeć do zakresu od 82
do 91
włącznie. Ten zakres reprezentuje zdarzenia zdefiniowane przez użytkownika. W usłudze SQL Trace użyj sp_trace_setevent, aby dodać zdarzenie z tym identyfikatorem do śledzenia w celu przechwycenia zdarzeń o tym samym identyfikatorze wyzwolonych z tej procedury składowanej.
[ @userinfo = ] 'userinfo'
Opcjonalny ciąg zdefiniowany przez użytkownika.
@userinfo jest nvarchar(128), z wartością domyślną NULL
.
[ @userdata = ] userdata
Opcjonalne dane zdefiniowane przez użytkownika dla zdarzenia.
@userdata jest varbinary(8000) z wartością domyślną 0x
.
Zwracanie wartości kodu
W poniższej tabeli opisano zwracane wartości kodu, które można uzyskać, po zakończeniu procedury składowanej.
Kod powrotny | Opis |
---|---|
0 |
Brak błędu. |
1 |
Nieznany błąd. |
3 |
Określone zdarzenie jest nieprawidłowe. Zdarzenie może nie istnieć lub nie jest odpowiednie dla procedury składowanej. |
13 |
Brak pamięci. Zwracany, gdy nie ma wystarczającej ilości pamięci, aby wykonać określoną akcję. |
Uwagi
Aby przechwycić zdarzenia wyzwalane przez tę procedurę składowaną przy użyciu zdarzeń rozszerzonych, dodaj zdarzenie user_info
do sesji zdarzeń. Aby uzyskać więcej informacji, zobacz CREATE EVENT SESSION. Zdarzenie user_info
jest wyzwalane dla dowolnej wartości identyfikatora zdarzenia zdefiniowanego przez użytkownika przekazanej do parametru @eventid
.
Z sp_trace_generateevent
można używać tylko numerów identyfikatorów zdarzeń zdefiniowanych przez użytkownika. Jeśli jest używany inny numer identyfikatora zdarzenia, zostanie zgłoszony błąd.
Parametry tej procedury składowanej są ściśle typizowane. Jeśli typ danych wartości przekazanej do parametru nie jest zgodny z typem danych parametru określonym w jego opisie, procedura składowana zwraca błąd.
sp_trace_generateevent
wykonuje wiele akcji wykonanych wcześniej przez xp_trace_*
rozszerzonych procedur składowanych. Użyj sp_trace_generateevent
zamiast xp_trace_generate_event
.
Uprawnienia
W programie SQL Server i usłudze Azure SQL Managed Instance wymagane jest uprawnienie ALTER TRACE
. W usłudze Azure SQL Database wymaga członkostwa w roli bazy danych public
.
Przykłady
W poniższym przykładzie jest uruchamiane zdarzenie zdefiniowane przez użytkownika po wstawieniu wiersza do tabeli. Zdarzenie zawiera dane wstawione do tabeli.
Aby zebrać zdarzenie wyzwolone w tym przykładzie, utworzyć rozszerzoną sesję zdarzeń i dołączyć zdarzenie user_info
lub utworzyć śledzenia SQL i dołączyć zdarzenie 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"}]
Powiązana zawartość
- TWORZENIE SESJI ZDARZEŃ (Transact-SQL)
- Omówienie zdarzeń rozszerzonych
- sys.fn_trace_geteventinfo (Transact-SQL)
- sp_trace_setevent (Transact-SQL)
- śledzenia SQL