sp_trace_setfilter (T-SQL)
Berlaku untuk: SQL Server
Menerapkan filter ke pelacakan. sp_trace_setfilter
dapat dijalankan hanya pada jejak yang ada yang dihentikan (@status adalah 0
). SQL Server mengembalikan kesalahan jika prosedur tersimpan ini dijalankan pada jejak yang tidak ada atau yang @status-nya bukan 0
.
Penting
Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Gunakan Extended Events sebagai gantinya.
Sintaks
sp_trace_setfilter
[ @traceid = ] traceid
, [ @columnid = ] columnid
, [ @logical_operator = ] logical_operator
, [ @comparison_operator = ] comparison_operator
, [ @value = ] value
[ ; ]
Argumen
[ @traceid = ] traceid
ID pelacakan tempat filter diatur. @traceid int, tanpa default. Pengguna menggunakan nilai @traceid ini untuk mengidentifikasi, memodifikasi, dan mengontrol jejak.
[ @columnid = ] columnid
ID kolom tempat filter diterapkan. @columnid int, tanpa default. Jika @columnid adalah NULL
, SQL Server menghapus semua filter untuk jejak yang ditentukan.
[ @logical_operator = ] logical_operator
Menentukan apakah operator AND (0
) atau OR (1
) diterapkan. @logical_operator int, tanpa default.
[ @comparison_operator = ] comparison_operator
Menentukan jenis perbandingan yang akan dibuat. @comparison_operator int, tanpa default. Tabel berisi operator perbandingan dan nilai perwakilannya.
Nilai | Operator perbandingan |
---|---|
0 |
= (Sama dengan) |
1 |
<> (Tidak Sama Dengan) |
2 |
> (Lebih Besar Dari) |
3 |
< (Kurang Dari) |
4 |
>= (Lebih besar dari atau sama dengan) |
5 |
<= (Kurang dari Atau Sama Dengan) |
6 |
LIKE |
7 |
NOT LIKE |
[ @value = ] nilai
Menentukan nilai yang akan difilter. Tipe data @value harus cocok dengan tipe data kolom yang akan difilter. Misalnya, jika filter diatur pada kolom ID Objek yang merupakan jenis data int , @value harus int. Jika @value adalah nvarchar atau varbinary, itu dapat memiliki panjang maksimum 8000.
Ketika operator perbandingan adalah LIKE
atau NOT LIKE
, operator logis dapat menyertakan %
atau filter lain yang sesuai untuk LIKE
operasi.
Anda dapat menentukan NULL
@value untuk memfilter peristiwa dengan NULL
nilai kolom. Hanya 0
operator (=
Sama) dan 1
(<>
Tidak Sama) yang valid dengan NULL
. Dalam hal ini, operator ini setara dengan Transact-SQL IS NULL
dan IS NOT NULL
operator.
Untuk menerapkan filter di antara rentang nilai kolom, sp_trace_setfilter
harus dijalankan dua kali: sekali dengan operator perbandingan yang lebih besar dari atau sama dengan (>=
), dan lain waktu dengan operator kurang dari atau sama dengan (<=
).
Untuk informasi selengkapnya tentang jenis data kolom data, lihat Referensi Kelas Peristiwa SQL Server.
Mengembalikan nilai kode
Tabel berikut ini menjelaskan nilai kode yang mungkin didapatkan pengguna setelah menyelesaikan prosedur tersimpan.
Mengembalikan kode | Deskripsi |
---|---|
0 |
Tidak ada kesalahan. |
1 |
Kesalahan tidak diketahui. |
2 |
Jejak saat ini sedang berjalan. Mengubah jejak saat ini menghasilkan kesalahan. |
4 |
Kolom yang ditentukan tidak valid. |
5 |
Kolom yang ditentukan tidak diizinkan untuk pemfilteran. Nilai ini hanya dikembalikan dari sp_trace_setfilter . |
6 |
Operator Perbandingan yang ditentukan tidak valid. |
7 |
Operator Logis yang ditentukan tidak valid. |
9 |
Trace Handle yang ditentukan tidak valid. |
13 |
Kehabisan memori. Dikembalikan ketika tidak ada cukup memori untuk melakukan tindakan yang ditentukan. |
16 |
Fungsi ini tidak valid untuk jejak ini. |
Keterangan
sp_trace_setfilter
adalah prosedur tersimpan SQL Server yang melakukan banyak tindakan yang sebelumnya dijalankan oleh prosedur tersimpan yang diperluas yang tersedia di versi SQL Server sebelumnya. Gunakan sp_trace_setfilter
alih-alih prosedur tersimpan xp_trace_set*filter
yang diperluas untuk membuat, menerapkan, menghapus, atau memanipulasi filter pada jejak. Untuk informasi selengkapnya, lihat Memfilter Jejak.
Semua filter untuk kolom tertentu harus diaktifkan bersama-sama dalam satu eksekusi sp_trace_setfilter
. Misalnya, jika pengguna ingin menerapkan dua filter pada kolom nama aplikasi dan satu filter pada kolom nama pengguna, pengguna harus menentukan filter pada nama aplikasi secara berurutan. SQL Server mengembalikan kesalahan jika pengguna mencoba menentukan filter pada nama aplikasi dalam satu panggilan prosedur tersimpan, diikuti dengan filter pada nama pengguna, lalu filter lain pada nama aplikasi.
Parameter semua prosedur tersimpan SQL Trace (sp_trace_*
) diketik secara ketat. Jika parameter ini tidak dipanggil dengan jenis data parameter input yang benar, seperti yang ditentukan dalam deskripsi argumen, prosedur tersimpan mengembalikan kesalahan.
Izin
Memerlukan izin ALTER TRACE.
Contoh
Contoh berikut menetapkan tiga filter pada Trace 1
. Filter N'SQLT%'
dan N'MS%'
beroperasi pada satu kolom (AppName
, nilai 10
) menggunakan operator perbandingan "LIKE
". Filter N'joe'
beroperasi pada kolom yang berbeda (UserName
, nilai 11
) menggunakan operator perbandingan "EQUAL
".
EXEC sp_trace_setfilter 1, 10, 0, 6, N'SQLT%';
EXEC sp_trace_setfilter 1, 10, 0, 6, N'MS%';
EXEC sp_trace_setfilter 1, 11, 0, 0, N'joe';