Jejak SQL

Berlaku untuk:SQL Server

Dalam SQL Trace, peristiwa dikumpulkan jika merupakan instans kelas peristiwa yang tercantum dalam definisi pelacakan. Peristiwa ini dapat difilter dari jejak atau diantrekan untuk tujuannya. Tujuannya dapat berupa file atau SQL Server Management Objects (SMO), yang dapat menggunakan informasi pelacakan dalam aplikasi yang mengelola SQL Server.

Penting

SQL Trace dan SQL Server Profiler dihentikan. Namespace Microsoft.SqlServer.Management.Trace yang berisi objek Microsoft SQL Server Trace dan Replay juga tidak digunakan lagi.

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. Untuk informasi selengkapnya tentang Peristiwa yang Diperluas, lihat Mulai Cepat: Peristiwa yang diperluas di SQL Server dan SSMS XEvent Profiler.

Manfaat SQL Trace

Microsoft SQL Server menyediakan prosedur tersimpan sistem Transact-SQL untuk membuat jejak pada instans Mesin Database SQL Server. Prosedur tersimpan sistem ini dapat digunakan dari dalam aplikasi Anda sendiri untuk membuat jejak secara manual, alih-alih menggunakan SQL Server Profiler. Ini memungkinkan Anda menulis aplikasi kustom khusus untuk kebutuhan perusahaan Anda.

Arsitektur Jejak SQL

Sumber Peristiwa dapat menjadi sumber apa pun yang menghasilkan peristiwa pelacakan, seperti batch Transact-SQL atau peristiwa SQL Server, seperti kebuntuan. Untuk informasi selengkapnya tentang peristiwa, lihat Referensi Kelas Peristiwa SQL Server. Setelah peristiwa terjadi, jika kelas peristiwa telah disertakan dalam definisi pelacakan, informasi peristiwa dikumpulkan oleh jejak. Jika filter telah ditentukan untuk kelas peristiwa dalam definisi pelacakan, filter diterapkan dan informasi peristiwa pelacakan diteruskan ke antrean. Dari antrean, informasi pelacakan ditulis ke file atau dapat digunakan oleh SMO dalam aplikasi, seperti SQL Server Profiler. Diagram berikut menunjukkan bagaimana SQL Trace mengumpulkan peristiwa selama pelacakan.

Database Engine event tracing process

Terminologi Jejak SQL

Istilah berikut menjelaskan konsep utama SQL Trace.

Kejadian
Terjadinya tindakan dalam instans Microsoft SQL Server Database Engine.

Kolom data
Atribut peristiwa.

Kelas peristiwa
Jenis peristiwa yang dapat dilacak. Kelas peristiwa berisi semua kolom data yang dapat dilaporkan oleh peristiwa.

Kategori peristiwa
Sekelompok kelas peristiwa terkait.

Jejak (kata benda)
Kumpulan peristiwa dan data yang dikembalikan oleh Mesin Database.

Jejak (kata kerja)
Untuk mengumpulkan dan memantau peristiwa dalam instans SQL Server.

Tracedefinition
Kumpulan kelas peristiwa, kolom data, dan filter yang mengidentifikasi jenis peristiwa yang akan dikumpulkan selama pelacakan.

Filter
Kriteria yang membatasi peristiwa yang dikumpulkan dalam pelacakan.

Lacak file
File yang dibuat ketika pelacakan disimpan.

Templat
Di SQL Server Profiler, file yang menentukan kelas peristiwa dan kolom data yang akan dikumpulkan dalam pelacakan.

Lacak tabel
Di SQL Server Profiler, tabel yang dibuat saat pelacakan disimpan ke tabel.

Menggunakan Kolom Data untuk Menjelaskan Peristiwa yang Dikembalikan

SQL Trace menggunakan kolom data dalam output pelacakan untuk menjelaskan peristiwa yang dikembalikan saat pelacakan berjalan. Tabel berikut ini menjelaskan kolom data SQL Server Profiler, yang merupakan kolom data yang sama dengan yang digunakan oleh SQL Trace, dan menunjukkan kolom yang dipilih secara default.

Kolom data Nomor kolom Deskripsi
* ApplicationName 10 Nama aplikasi klien yang membuat koneksi ke instans SQL Server. Kolom ini diisi dengan nilai yang diteruskan oleh aplikasi dan bukan nama program.
BigintData1 52 Nilai (jenis data bigint ), yang tergantung pada kelas peristiwa yang ditentukan dalam jejak.
BigintData2 53 Nilai (jenis data bigint ), yang tergantung pada kelas peristiwa yang ditentukan dalam jejak.
* Data Biner 2 Nilai biner bergantung pada kelas peristiwa yang diambil dalam pelacakan.
* ClientProcessID 9 ID yang ditetapkan oleh komputer host ke proses tempat aplikasi klien berjalan. Kolom data ini diisi jika ID proses klien disediakan oleh klien.
ColumnPermissions 44 Menunjukkan apakah izin kolom telah diatur. Anda dapat mengurai teks pernyataan untuk menentukan izin mana yang diterapkan ke kolom mana.
* CPU 18 Jumlah waktu CPU (dalam milidetik) yang digunakan oleh peristiwa.
ID Database 3 ID database yang ditentukan oleh pernyataan USE database_name , atau ID database default jika tidak ada pernyataan USE database_nameyang dikeluarkan untuk instans tertentu. SQL Server Profiler menampilkan nama database jika kolom data ServerName diambil dalam jejak dan server tersedia. Tentukan nilai untuk database dengan menggunakan fungsi DB_ID.
DatabaseName 35 Nama database tempat pernyataan pengguna berjalan.
DBUserName 40 Nama pengguna SQL Server klien.
* Durasi 13 Durasi (dalam mikrostik) peristiwa.

Server melaporkan durasi peristiwa dalam mikrodetik (satu juta, atau 10-6, dari detik) dan jumlah waktu CPU yang digunakan oleh peristiwa dalam milidetik (seribu, atau 10-3, dari detik). Antarmuka pengguna grafis SQL Server Profiler menampilkan kolom Durasi dalam milidetik secara default, tetapi ketika pelacakan disimpan ke file atau tabel database, nilai kolom Durasi ditulis dalam mikrostik.
* EndTime 15 Waktu di mana peristiwa berakhir. Kolom ini tidak diisi untuk kelas peristiwa yang merujuk ke peristiwa yang dimulai, seperti SQL:BatchStarting atau SP:Starting.
Kesalahan 31 Nomor kesalahan peristiwa tertentu. Seringkali ini adalah nomor kesalahan yang disimpan dalam sysmessages.
* EventClass 27 Jenis kelas peristiwa yang diambil.
EventSequence 51 Nomor urut untuk kejadian ini.
EventSubClass 21 Jenis subkelas peristiwa, yang menyediakan informasi lebih lanjut tentang setiap kelas peristiwa. Misalnya, nilai subkelas peristiwa untuk kelas peristiwa Peringatan Eksekusi mewakili jenis peringatan eksekusi:

1 = Kueri menunggu. Kueri harus menunggu sumber daya sebelum dapat dijalankan; misalnya, memori.

2 = Batas waktu kueri. Waktu kueri habis saat menunggu sumber daya yang diperlukan untuk dijalankan. Kolom data ini tidak diisi untuk semua kelas peristiwa.
GUID 54 Nilai GUID yang bergantung pada kelas peristiwa yang ditentukan dalam pelacakan.
FileName 36 Nama logis file yang dimodifikasi.
Handel 33 Bilangan bulat yang digunakan oleh ODBC, OLE DB, atau DB-Library untuk mengoordinasikan eksekusi server.
HostName 8 Nama komputer tempat klien berjalan. Kolom data ini diisi jika nama host disediakan oleh klien. Untuk menentukan nama host, gunakan fungsi HOST_NAME.
IndexID 24 ID untuk indeks pada objek yang terpengaruh oleh peristiwa. Untuk menentukan ID indeks untuk objek, gunakan kolom indid dari tabel sistem sysindexes .
IntegerData 25 Nilai bilangan bulat bergantung pada kelas peristiwa yang diambil dalam pelacakan.
IntegerData2 55 Nilai bilangan bulat bergantung pada kelas peristiwa yang diambil dalam pelacakan.
IsSystem 60 Menunjukkan apakah peristiwa terjadi pada proses sistem atau proses pengguna:

1 = sistem

0 = pengguna
LineNumber 5 Berisi jumlah baris yang berisi kesalahan. Untuk peristiwa yang melibatkan pernyataan Transact-SQL, seperti SP:StmtStarting, LineNumber berisi nomor baris pernyataan dalam prosedur atau batch tersimpan.
LinkedServerName 45 Nama server tertaut.
* LoginName 11 Nama login pengguna (baik login keamanan SQL Server atau info masuk masuk Windows dalam bentuk DOMAIN\Username).
LoginSid 41 Pengidentifikasi keamanan (SID) pengguna yang masuk. Anda dapat menemukan informasi ini dalam tampilan sys.server_principals database master. Setiap login ke server memiliki ID unik.
MethodName 47 Nama metode OLEDB.
Mode 32 Bilangan bulat yang digunakan oleh berbagai peristiwa untuk menjelaskan status yang diminta atau telah diterima oleh peristiwa.
NestLevel 29 Bilangan bulat yang mewakili data yang dikembalikan oleh @@NESTLEVEL.
NTDomainName 7 Domain Microsoft Windows tempat pengguna berada.
* NTUserName 6 Nama pengguna Windows.
ObjectID 22 ID objek yang ditetapkan sistem.
ObjectID2 56 ID objek atau entitas terkait, jika tersedia.
ObjectName 34 Nama objek yang dirujuk.
**ObjectType 28 Nilai yang mewakili jenis objek yang terlibat dalam peristiwa. Nilai ini sesuai dengan kolom jenis dalam sysobjects.
Offset 61 Offset awal pernyataan dalam prosedur atau batch tersimpan.
OwnerID 58 Hanya untuk peristiwa kunci. Jenis objek yang memiliki kunci.
OwnerName 37 Nama pengguna database pemilik objek.
ParentName 59 Nama skema tempat objek berada.
Izin 19 Nilai bilangan bulat yang mewakili jenis izin yang diperiksa. Nilainya adalah:

1 = PILIH SEMUA

2 = PERBARUI SEMUA

4 = REFERENSI SEMUA

8 = SISIPKAN

16 = HAPUS

32 = EXECUTE (hanya prosedur)

4096 = SELECT ANY (setidaknya satu kolom)

8192 = PERBARUI APA PUN

16384 = REFERENSI APA PUN
ProviderName 46 Nama penyedia OLEDB.
* Membaca 16 Jumlah operasi baca pada disk logis yang dilakukan oleh server atas nama peristiwa. Operasi baca ini mencakup semua bacaan dari tabel dan buffer selama eksekusi pernyataan.
RequestID 49 ID permintaan yang berisi pernyataan.
RoleName 38 Nama peran aplikasi yang sedang diaktifkan.
RowCounts 48 Jumlah baris dalam batch.
ServerName 26 Nama instans SQL Server yang sedang dilacak.
SessionLoginName 64 Nama login pengguna yang berasal dari sesi. Misalnya, jika Anda terhubung ke SQL Server menggunakan Login1 dan menjalankan pernyataan sebagai Login2, SessionLoginName menampilkan Login1, sementara LoginName menampilkan Login2. Kolom data ini menampilkan login SQL Server dan Windows.
Keparahan 20 Tingkat keparahan peristiwa pengecualian.
SourceDatabaseID 62 ID database tempat sumber objek berada.
* SPID 12 ID proses server (SPID) yang ditetapkan oleh SQL Server ke proses yang terkait dengan klien.
SqlHandle 63 Hash 64-bit berdasarkan teks kueri ad hoc atau database dan ID objek objek SQL. Nilai ini dapat diteruskan ke sys.dm_exec_sql_text() untuk mengambil teks SQL terkait.
* StartTime 14 Waktu di mana peristiwa dimulai, jika tersedia.
Solid 30 Kode status kesalahan.
Sukses 23 Mewakili apakah peristiwa berhasil. Nilai mencakup:

1 = Berhasil.

0 = Kegagalan

Misalnya, 1 berarti pemeriksaan izin yang berhasil, dan 0 berarti pemeriksaan gagal.
TargetLoginName 42 Untuk tindakan yang menargetkan login, nama login yang ditargetkan; misalnya, untuk menambahkan login baru.
TargetLoginSid 43 Untuk tindakan yang menargetkan login, SID dari login yang ditargetkan; misalnya, untuk menambahkan login baru.
TargetUserName 39 Untuk tindakan yang menargetkan pengguna database, nama pengguna tersebut; misalnya, untuk memberikan izin kepada pengguna.
* TextData 1 Nilai teks bergantung pada kelas peristiwa yang diambil dalam pelacakan. Namun, jika Anda melacak kueri berparameter, variabel tidak ditampilkan dengan nilai data di kolom TextData .
ID Transaksi 4 ID transaksi yang ditetapkan sistem.
Jenis 57 Nilai bilangan bulat bergantung pada kelas peristiwa yang diambil dalam pelacakan.
* Menulis 17 Jumlah operasi penulisan disk fisik yang dilakukan oleh server atas nama peristiwa.
XactSequence 50 Token untuk menjelaskan transaksi saat ini.

* Kolom data ini diisi secara default untuk semua peristiwa.

** Untuk informasi selengkapnya tentang kolom data ObjectType , lihat Kolom Peristiwa Pelacakan ObjectType.

Tugas Pelacakan SQL

Deskripsi Tugas Topik
Menjelaskan cara membuat dan menjalankan jejak menggunakan prosedur tersimpan Transact-SQL. Membuat dan Menjalankan Jejak Menggunakan Prosedur Tersimpan Transact-SQL
Menjelaskan cara membuat jejak manual menggunakan prosedur tersimpan pada instans Mesin Database SQL Server. Membuat Jejak Manual menggunakan Prosedur Tersimpan
Menjelaskan cara menyimpan hasil pelacakan ke file tempat hasil pelacakan ditulis. Simpan Hasil Pelacakan ke File
Menjelaskan cara meningkatkan akses ke data pelacakan dengan menggunakan ruang di direktori sementara . Meningkatkan Akses ke Data Pelacakan
Menjelaskan cara menggunakan prosedur tersimpan untuk membuat jejak. Membuat Jejak (Transact-SQL)
Menjelaskan cara menggunakan prosedur tersimpan untuk membuat filter yang hanya mengambil informasi yang Anda butuhkan pada peristiwa yang sedang dilacak. Mengatur Filter Pelacakan (Transact-SQL)
Menjelaskan cara menggunakan prosedur tersimpan untuk mengubah jejak yang ada. Mengubah Jejak yang Ada (Transact-SQL)
Menjelaskan cara menggunakan fungsi bawaan untuk melihat jejak yang disimpan. Menampilkan Pelacakan Tersimpan (Transact-SQL)
Menjelaskan cara menggunakan fungsi bawaan untuk melihat informasi filter pelacakan. Lihat Informasi Filter (T-SQL)
Menjelaskan cara menggunakan prosedur tersimpan untuk menghapus jejak. Menghapus Jejak (Transact-SQL)
Menjelaskan cara meminimalkan biaya performa yang dikeluarkan oleh jejak. Mengoptimalkan Jejak SQL
Menjelaskan cara memfilter jejak untuk meminimalkan overhead yang dikeluarkan selama pelacakan. Memfilter Jejak
Menjelaskan cara meminimalkan jumlah data yang dikumpulkan jejak. Batasi File Pelacakan dan Ukuran Tabel
Menjelaskan dua cara untuk menjadwalkan pelacakan di Microsoft SQL Server. Pelacakan Jadwal

Lihat Juga

Templat dan Izin Profiler SQL Server
Panduan Pemrograman Objek Manajemen SQL Server (SMO)