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.
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)
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk