sp_trace_generateevent (T-SQL)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Membuat peristiwa yang ditentukan pengguna. Peristiwa dapat dikumpulkan menggunakan SQL Trace atau Extended Events.
Catatan
Prosedur tersimpan ini tidak digunakan lagi. Semua prosedur tersimpan terkait SQL Trace lainnya tidak digunakan lagi.
Sintaks
sp_trace_generateevent
[ @eventid = ] eventid
[ , [ @userinfo = ] N'userinfo' ]
[ , [ @userdata = ] userdata ]
[ ; ]
Argumen
[ @eventid = ] eventid
ID peristiwa yang akan dipicu. @eventid int, tanpa default. ID harus dalam rentang dari 82
melalui 91
inklusif. Rentang ini mewakili peristiwa yang ditentukan pengguna. Di SQL Trace, gunakan sp_trace_setevent untuk menambahkan peristiwa dengan ID ini ke jejak untuk menangkap peristiwa dengan ID yang sama yang diaktifkan dari prosedur tersimpan ini.
[ @userinfo = ] 'userinfo'
String opsional yang ditentukan pengguna. @userinfo adalah nvarchar(128), dengan default NULL
.
[ @userdata = ] userdata
Data opsional yang ditentukan pengguna untuk peristiwa tersebut. @userdata adalah varbinary(8000), dengan default .0x
Mengembalikan nilai kode
Tabel berikut ini menjelaskan nilai kode pengembalian yang bisa Anda dapatkan, mengikuti penyelesaian prosedur tersimpan.
Mengembalikan kode | Deskripsi |
---|---|
0 |
Tidak ada kesalahan. |
1 |
Kesalahan tidak diketahui. |
3 |
Peristiwa yang ditentukan tidak valid. Peristiwa mungkin tidak ada atau bukan yang sesuai untuk prosedur tersimpan. |
13 |
Kehabisan memori. Dikembalikan ketika tidak ada cukup memori untuk melakukan tindakan yang ditentukan. |
Keterangan
Untuk menangkap peristiwa yang diaktifkan oleh prosedur tersimpan ini menggunakan Acara yang Diperluas, tambahkan user_info
peristiwa ke sesi peristiwa. Untuk informasi selengkapnya, lihat MEMBUAT SESI PERISTIWA. Peristiwa user_info
diaktifkan untuk nilai ID peristiwa yang ditentukan pengguna yang diteruskan ke @eventid
parameter .
Hanya nomor ID peristiwa yang ditentukan pengguna yang dapat digunakan dengan sp_trace_generateevent
. Kesalahan dimunculkan jika nomor ID peristiwa lainnya digunakan.
Parameter prosedur tersimpan ini dititik secara ketat. Jika jenis data nilai yang diteruskan ke parameter tidak cocok dengan jenis data parameter yang ditentukan dalam deskripsinya, prosedur tersimpan mengembalikan kesalahan.
sp_trace_generateevent
melakukan banyak tindakan yang sebelumnya dijalankan oleh xp_trace_*
prosedur tersimpan yang diperluas. Gunakan sp_trace_generateevent
alih-alih xp_trace_generate_event
.
Izin
Di SQL Server dan di Azure SQL Managed Instance, memerlukan ALTER TRACE
izin. Di Azure SQL Database, memerlukan keanggotaan dalam public
peran database.
Contoh
Contoh berikut mengaktifkan peristiwa yang ditentukan pengguna saat baris disisipkan ke dalam tabel. Kejadian berisi data yang disisipkan ke dalam tabel.
Untuk mengumpulkan peristiwa yang diaktifkan oleh contoh ini, buat sesi peristiwa yang diperluas dan sertakan user_info
peristiwa, atau buat jejak SQL dan sertakan UserConfigurable:0
peristiwa.
-- 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"}]