Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
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
Penting
Argumen untuk prosedur tersimpan yang diperluas harus dimasukkan dalam urutan tertentu seperti yang dijelaskan di bagian Sintaks. Jika parameter dimasukkan di luar urutan, pesan kesalahan terjadi.
[ @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 = ] 'info pengguna'
String opsional yang ditentukan pengguna.
@userinfo adalah nvarchar(128), dengan default NULL.
[ @userdata = ] data pengguna
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 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"}]