Pelacakan Data di ADO.NET
Fungsionalitas pelacakan data fitur bawaan ADO.NET yang didukung oleh penyedia data .NET untuk SQL Server, Oracle, OLE DB dan ODBC, serta ADO.NET DataSet, dan protokol jaringan SQL Server.
Pelacakan panggilan API akses data dapat membantu mendiagnosis masalah berikut:
Ketidakcocokan skema antara program klien dan database.
Ketidaktersediaan database atau masalah pustaka jaringan.
Kesalahan SQL akibat dikodekan secara permanen atau dihasilkan oleh aplikasi.
Logika pemrograman yang salah.
Masalah yang dihasilkan dari interaksi antara beberapa komponen ADO.NET atau antara ADO.NET dan komponen Anda sendiri.
Untuk mendukung berbagai teknologi pelacakan, penelusuran dapat diperluas, sehingga pengembang dapat melacak masalah di setiap tingkat tumpukan aplikasi. Meskipun penelusuran bukan fitur khusus ADO.NET, penyedia Microsoft memanfaatkan API pelacakan dan instrumentasi umum.
Untuk mengetahui informasi selengkapnya tentang cara mengatur dan mengonfigurasi pelacakan terkelola di ADO.NET, lihat Melacak Akses Data.
Mengakses Informasi Diagnostik dalam Log Peristiwa Diperpanjang
Di Penyedia Data .NET Framework untuk SQL Server, pelacakan akses data (Pelacakan Akses Data) telah diperbarui untuk mempermudah proses menghubungkan kejadian klien dengan informasi diagnostik, seperti kegagalan koneksi, dari buffer ring konektivitas server dan informasi performa aplikasi dalam log kejadian yang diperluas. Untuk mengetahui informasi tentang cara membaca log kejadian yang diperluas, lihat Menampilkan Data Sesi Kejadian.
Untuk operasi koneksi, ADO.NET akan mengirim ID koneksi klien. Jika koneksi gagal, Anda dapat mengakses buffer ring konektivitas (Pemecahan masalah konektivitas di SQL Server 2008 dengan Buffer Ring Konektivitas) serta menemukan bidang ClientConnectionID
dan mendapatkan informasi diagnostik tentang kegagalan koneksi. ID koneksi klien akan dicatat di buffer ring hanya jika terjadi kesalahan. (Jika koneksi gagal sebelum mengirim paket prelogin, ID koneksi klien tidak akan dihasilkan.) ID koneksi klien adalah GUID 16-byte. Anda juga dapat menemukan ID koneksi klien dalam output target kejadian yang diperluas, jika tindakan client_connection_id
ditambahkan ke kejadian dalam sesi kejadian yang diperluas. Anda dapat mengaktifkan pelacakan akses data dan menjalankan kembali perintah koneksi dan mengamati bidang ClientConnectionID
dalam jejak akses data, jika Anda memerlukan bantuan diagnostik driver klien lebih lanjut.
Anda bisa mendapatkan ID koneksi klien secara terprogram dengan menggunakan properti SqlConnection.ClientConnectionID
.
ClientConnectionID
tersedia untuk objek SqlConnection yang berhasil membuat koneksi. Jika upaya koneksi gagal, ClientConnectionID
mungkin tersedia melalui SqlException.ToString
.
ADO.NET juga mengirimkan ID aktivitas khusus alur. ID aktivitas ditangkap dalam sesi kejadian yang diperluas jika sesi dimulai dengan opsi TRACK_CAUSALITY diaktifkan. Untuk masalah performa dengan koneksi aktif, Anda bisa mendapatkan ID aktivitas dari jejak akses data klien (bidang ActivityID
) lalu menemukan ID aktivitas dalam output kejadian yang diperluas. ID aktivitas dalam kejadian yang diperluas adalah GUID 16-byte (tidak sama dengan GUID untuk ID koneksi klien) yang ditambahkan dengan nomor urut empat byte. Nomor urut mewakili urutan permintaan dalam alur dan menunjukkan pemesanan relatif pernyataan batch dan RPC untuk alur. ActivityID
saat ini secara opsional dikirim untuk SQL pernyataan batch dan permintaan RPC saat pelacakan akses data diaktifkan dan bit ke-18 dalam kata konfigurasi pelacakan akses data diaktifkan.
Berikut ini adalah contoh yang menggunakan Transact-SQL untuk memulai sesi kejadian yang diperluas yang akan disimpan dalam buffer ring 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)