Bagikan melalui


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.

Konvensi sintaks transact-SQL

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