Pelacakan Data di ADO.NET

Microsoft.Data.SqlClient mengekspos pelacakan akses data melalui sumber peristiwa Microsoft.Data.SqlClient.EventSource. Komponen ADO.NET lainnya, seperti penyedia .NET Framework untuk Oracle, OLE DB, dan ODBC, dan DataSet, memiliki fasilitas pelacakan mereka sendiri.

Melacak panggilan API akses data dapat membantu mendiagnosis masalah berikut:

  • Ketidakcocokan skema antara program klien dan database.

  • Tidak tersedianya database atau masalah pustaka jaringan.

  • SQL yang salah apakah dikodekan secara permanen atau dihasilkan oleh aplikasi.

  • Logika pemrograman salah.

  • Masalah yang dihasilkan dari interaksi antara beberapa komponen ADO.NET atau antara ADO.NET dan komponen Anda sendiri.

Untuk mendukung teknologi pelacakan yang berbeda, pelacakan dapat diperluas, sehingga pengembang dapat melacak masalah di tingkat tumpukan aplikasi apa pun. Meskipun pelacakan bukanlah fitur yang hanya ada di ADO.NET, penyedia Microsoft memanfaatkan API pelacakan dan instrumentasi yang umum.

Untuk informasi selengkapnya tentang cara mengumpulkan jejak Microsoft.Data.SqlClient, lihat Mengaktifkan pelacakan EventSource di SqlClient.

Mengakses Informasi Diagnostik di Log Peristiwa yang Diperluas

Gunakan Microsoft.Data.SqlClient connection IDs untuk mengorelasikan peristiwa klien dengan informasi diagnostik server, seperti kegagalan koneksi, di buffer cincin konektivitas dan log peristiwa yang diperluas. Untuk informasi tentang cara membaca log peristiwa yang diperluas, lihat Menampilkan Data Sesi Peristiwa.

Untuk operasi koneksi, Microsoft.Data.SqlClient mengirimkan ID koneksi klien selama pertukaran pralogin. Jika koneksi gagal, cari bidang ClientConnectionID di buffer cincin konektivitas untuk mendapatkan informasi diagnostik tentang kegagalan koneksi. ID koneksi klien akan dicatat di buffer ring hanya jika terjadi kesalahan. Jika koneksi gagal sebelum pertukaran pra-login, server tidak akan menerima ID. ID koneksi klien adalah GUID 16 byte. Anda juga dapat menemukan ID koneksi klien dalam output target Extended Events jika Anda menambahkan tindakan client_connection_id ke peristiwa dalam sesi Extended Events.

Untuk mendapatkan ID koneksi klien secara terprogram, gunakan ClientConnectionId.

ID koneksi tersedia untuk SqlConnection setelah berhasil membuat koneksi. Jika upaya koneksi gagal, ID mungkin tersedia melalui ClientConnectionId.

Microsoft. Data.SqlClient juga mengirim ID aktivitas khusus utas untuk pernyataan batch dan permintaan panggilan prosedur jarak jauh (RPC) saat sumber peristiwanya diaktifkan dan server mendukung header pelacakan. Untuk mencatat ID aktivitas dalam sesi Extended Events, aktifkan TRACK_CAUSALITY. Untuk masalah performa dengan koneksi aktif, temukan ID aktivitas di jejak klien lalu di output peristiwa yang diperluas. ID aktivitas berisi GUID 16 byte dan nomor urut empat byte. Nomor urut menunjukkan urutan relatif permintaan dalam satu utas. Kata konfigurasi pelacakan akses data warisan tidak mengonfigurasi sumber peristiwa Microsoft.Data.SqlClient.

Berikut ini adalah contoh yang menggunakan Transact-SQL untuk memulai sesi extended events yang akan disimpan dalam ring buffer dan akan merekam ID aktivitas yang dikirim dari klien pada RPC dan operasi batch.

create event session MySession on server
add event connectivity_ring_buffer_recorded,
add event sql_statement_starting (action (client_connection_id)),
add event sql_statement_completed (action (client_connection_id)),
add event rpc_starting (action (client_connection_id)),
add event rpc_completed (action (client_connection_id))
add target ring_buffer with (track_causality=on)

Lihat juga