ADO.NET’te Veri İzleme

ADO.NET, SQL Server, Oracle, OLE DB ve ODBC için .NET veri sağlayıcılarının yanı sıra ADO.NET DataSetve SQL Server ağ protokolleri tarafından desteklenen yerleşik veri izleme işlevselliğine sahiptir.

Veri erişimi API çağrılarını izlemek aşağıdaki sorunları tanılamaya yardımcı olabilir:

  • İstemci programı ve veritabanı arasında şema uyuşmazlığı.

  • Veritabanı kullanılamıyor veya ağ kitaplığı sorunları.

  • Sabit kodlanmış veya uygulama tarafından oluşturulmuş yanlış SQL.

  • Yanlış programlama mantığı.

  • Birden çok ADO.NET bileşeni veya ADO.NET ile kendi bileşenleriniz arasındaki etkileşimden kaynaklanan sorunlar.

Farklı izleme teknolojilerini desteklemek için izleme genişletilebilir olduğundan geliştirici, uygulama yığınının herhangi bir düzeyinde bir sorunu izleyebilir. İzleme bir ADO olmasa da. Yalnızca NET özelliği olan Microsoft sağlayıcıları genelleştirilmiş izleme ve izleme API'lerinden yararlanıyor.

ADO.NET'da yönetilen izlemeyi ayarlama ve yapılandırma hakkında daha fazla bilgi için bkz . Veri Erişimini İzleme.

Genişletilmiş Olay Günlüğünde Tanılama Bilgilerine Erişme

SQL Server için .NET Framework Veri Sağlayıcısı veri erişim izleme (Veri Erişim İzleme), istemci olaylarını, sunucunun bağlantı halkası arabelleğinden ve genişletilmiş olay günlüğündeki uygulama performansı bilgilerinden bağlantı hataları gibi tanılama bilgileriyle ilişkilendirmeyi kolaylaştırmak için güncelleştirildi. Genişletilmiş olay günlüğünü okuma hakkında bilgi için bkz . Olay Oturumu Verilerini Görüntüleme.

Bağlantı işlemleri için ADO.NET bir istemci bağlantı kimliği gönderir. Bağlantı başarısız olursa, bağlantı halkası arabelleğine erişebilir (Bağlan Ivity Ring Buffer ile SQL Server 2008'de Bağlan üretkenlik sorunlarını giderme) ve alanı bulabilir ClientConnectionID ve bağlantı hatası hakkında tanılama bilgileri alabilirsiniz. İstemci bağlantı kimlikleri yalnızca bir hata oluştuğunda kademe arabelleğine kaydedilir. (Ön oturum açma paketini göndermeden önce bağlantı başarısız olursa, istemci bağlantı kimliği oluşturulmaz.) İstemci bağlantı kimliği 16 baytlık bir GUID'dir. Eylemin genişletilmiş olaylar oturumundaki olaylara eklenmesi durumunda client_connection_id istemci bağlantı kimliğini genişletilmiş olaylar hedef çıkışında da bulabilirsiniz. Daha fazla istemci sürücüsü tanılama yardımına ihtiyacınız varsa veri erişimi izlemeyi etkinleştirebilir ve bağlantı komutunu yeniden çalıştırabilir ve veri erişim izlemesindeki alanı gözlemleyebilirsiniz ClientConnectionID .

özelliğini kullanarak SqlConnection.ClientConnectionID istemci bağlantı kimliğini program aracılığıyla alabilirsiniz.

ClientConnectionID başarıyla bağlantı kuran bir SqlConnection nesne için kullanılabilir. Bağlantı girişimi başarısız olursa aracılığıyla ClientConnectionID kullanılabilir SqlException.ToString.

ADO.NET ayrıca iş parçacığına özgü bir etkinlik kimliği de gönderir. Oturumlar TRACK_CAUSALITY seçeneği etkin olarak başlatılırsa, etkinlik kimliği genişletilmiş olaylar oturumlarında yakalanır. Etkin bağlantıyla ilgili performans sorunları için, istemcinin veri erişim izlemesinden (ActivityID alan) etkinlik kimliğini alabilir ve ardından genişletilmiş olaylar çıkışında etkinlik kimliğini bulabilirsiniz. Genişletilmiş olaylardaki etkinlik kimliği, dört baytlık bir sıra numarasıyla eklenen 16 baytlık GUID'dir (istemci bağlantı kimliği için GUID ile aynı değildir). Sıra numarası, bir iş parçacığı içindeki isteğin sırasını temsil eder ve iş parçacığı için toplu iş ve RPC deyimlerinin göreli sıralamasını gösterir. ActivityID şu anda, veri erişim izleme etkinleştirildiğinde ve veri erişimi izleme yapılandırma sözcüğündeki 18. bit AÇILDI olduğunda SQL toplu iş deyimleri ve RPC istekleri için isteğe bağlı olarak gönderilir.

Aşağıda, bir kademe arabelleğinde depolanacak genişletilmiş olaylar oturumunu başlatmak için Transact-SQL kullanan ve RPC ve toplu işlemlerde istemciden gönderilen etkinlik kimliğini kaydeden bir örnek verilmiştir.

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)

Ayrıca bkz.