Bagikan melalui


Pelacakan Data di ADO.NET

ADO.NET fitur fungsi pelacakan data bawaan yang didukung oleh penyedia data .NET untuk SQL Server, Oracle, OLE DB dan ODBC, serta ADO.NET DataSet, dan protokol jaringan SQL Server.

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 mengatur dan mengonfigurasi pelacakan terkelola di ADO.NET, lihat Melacak Akses Data.

Mengakses Informasi Diagnostik di Log Peristiwa yang Diperluas

Di Penyedia Data .NET Framework untuk SQL Server, pelacakan akses data (Pelacakan Akses Data) telah diperbarui untuk mempermudah menghubungkan peristiwa klien dengan informasi diagnostik, seperti kegagalan koneksi, dari buffer cincin konektivitas server dan informasi performa aplikasi dalam log peristiwa 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 cincin konektivitas (Pemecahan masalah konektivitas di SQL Server 2008 dengan Buffer Cincin Konektivitas) dan menemukan ClientConnectionID bidang 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 acara yang diperpanjang, jika tindakan client_connection_id ditambahkan ke acara dalam sesi acara yang diperpanjang. Anda dapat mengaktifkan pelacakan akses data dan menjalankan kembali perintah koneksi dan mengamati ClientConnectionID bidang dalam pelacakan akses data, jika Anda memerlukan bantuan diagnostik driver klien lebih lanjut.

Anda bisa mendapatkan ID koneksi klien secara terprogram dengan menggunakan SqlConnection.ClientConnectionID properti .

ClientConnectionID tersedia untuk SqlConnection objek yang berhasil membuat koneksi. Jika upaya koneksi gagal, ClientConnectionID mungkin tersedia melalui SqlException.ToString.

ADO.NET juga mengirim ID aktivitas khusus utas. ID aktivitas diambil dalam sesi peristiwa 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 (ActivityID bidang) lalu menemukan ID aktivitas dalam output peristiwa yang diperluas. ID aktivitas dalam event yang diperluas adalah GUID 16 byte (tidak sama dengan GUID untuk ID koneksi klien) dengan tambahan nomor urutan empat byte. Nomor urut mewakili urutan permintaan dalam alur dan menunjukkan pemesanan relatif pernyataan batch dan RPC untuk alur. ActivityID saat ini dapat dikirim secara opsional untuk pernyataan batch SQL dan permintaan RPC ketika pelacakan akses data diaktifkan dan bit ke-18 dalam konfigurasi pelacakan akses data dihidupkan.

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)

Lihat juga