Bagikan melalui


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.

Konvensi sintaks transact-SQL

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';