Megosztás a következőn keresztül:


Adatkövetés a ADO.NET

ADO.NET beépített adatkövetési funkciókkal rendelkezik, amelyeket az SQL Server, az Oracle, az OLE DB és az ODBC .NET-adatszolgáltatók, valamint a ADO.NET DataSetés az SQL Server hálózati protokollok támogatnak.

Az adatelérési API-hívások nyomon követése segíthet a következő problémák diagnosztizálásában:

  • Sémaeltérés az ügyfélprogram és az adatbázis között.

  • Az adatbázis elérhetetlensége vagy a hálózati kódtár problémái.

  • Helytelen SQL, akár keményen kódolt, akár egy alkalmazás által generált.

  • Helytelen programozási logika.

  • Több ADO.NET összetevő közötti interakcióból vagy a ADO.NET és a saját összetevők közötti interakcióból eredő problémák.

A különböző nyomkövetési technológiák támogatásához a nyomkövetés bővíthető, így a fejlesztők az alkalmazásverem bármely szintjén nyomon követhetik a problémát. Bár a nyomkövetés nem ADO. A csak NET-funkcióval rendelkező Microsoft-szolgáltatók kihasználják az általános nyomkövetési és kialakítási API-kat.

A felügyelt nyomkövetés ADO.NET való beállításáról és konfigurálásáról további információt az Adathozzáférés nyomon követése című témakörben talál.

Diagnosztikai adatok elérése a kiterjesztett eseménynaplóban

Az SQL Server .NET-keretrendszer adatszolgáltatójában az adathozzáférés-nyomkövetés (Data Access Tracing) frissült, hogy egyszerűbb legyen összekapcsolni az ügyféleseményeket a kiszolgáló kapcsolati gyűrűjének pufferéből és az alkalmazás teljesítményadataiból származó diagnosztikai adatokkal, például a kapcsolati hibákkal. A kiterjesztett eseménynapló olvasásáról további információt az Esemény munkamenet adatainak megtekintése című témakörben talál.

Kapcsolati műveletek esetén ADO.NET küld egy ügyfélkapcsolat-azonosítót. Ha a kapcsolat meghiúsul, hozzáférhet a kapcsolati gyűrű pufferéhez (Csatlakozás ivity hibaelhárítás az SQL Server 2008-ban a Csatlakozás ivity Ring Buffer használatával), és megkeresheti a ClientConnectionID mezőt, és diagnosztikai információkat kaphat a kapcsolati hibáról. Az ügyfélkapcsolati azonosítók csak hiba esetén lesznek naplózva a gyűrűpufferben. (Ha egy kapcsolat az előbeírási csomag elküldése előtt meghiúsul, a rendszer nem hoz létre ügyfélkapcsolat-azonosítót.) Az ügyfélkapcsolat azonosítója egy 16 bájtos GUID. Az ügyfélkapcsolat azonosítóját a kiterjesztett események célkimenetében is megtalálhatja, ha a client_connection_id művelet hozzáadva van az eseményekhez egy kiterjesztett esemény munkamenetben. Engedélyezheti az adathozzáférés nyomon követését, és újrafuttathatja a kapcsolati parancsot, és megfigyelheti az ClientConnectionID adatelérési nyomkövetés mezőjét, ha további ügyfél-illesztőprogram diagnosztikai segítségre van szüksége.

Az ügyfélkapcsolat azonosítóját programozott módon is lekérheti a SqlConnection.ClientConnectionID tulajdonság használatával.

Ez ClientConnectionID egy SqlConnection olyan objektumhoz érhető el, amely sikeresen létesít kapcsolatot. Ha egy kapcsolati kísérlet meghiúsul, lehetséges, ClientConnectionID hogy a következőn keresztül SqlException.ToStringérhető el: .

ADO.NET egy szálspecifikus tevékenységazonosítót is küld. A tevékenységazonosító akkor lesz rögzítve a kiterjesztett esemény-munkamenetekben, ha a munkamenetek az TRACK_CAUSALITY beállítás engedélyezésével kezdődnek. Az aktív kapcsolat teljesítményproblémái esetén lekérheti a tevékenységazonosítót az ügyfél adathozzáférési nyomkövetéséből (ActivityID mezőjéből), majd megkeresheti a tevékenységazonosítót a kiterjesztett események kimenetében. A kiterjesztett események tevékenységazonosítója egy 16 bájtos GUID (nem ugyanaz, mint az ügyfélkapcsolat-azonosító GUID azonosítója) négy bájtos sorszámmal kiegészítve. A sorszám egy szálon belüli kérés sorrendjét jelöli, és a szál köteg- és RPC-utasításainak relatív sorrendjét jelzi. A ActivityID rendszer jelenleg opcionálisan küldi el az SQL batch-utasításokhoz és RPC-kérelmekhez, ha engedélyezve van az adathozzáférés-nyomkövetés, és az adathozzáférés-nyomkövetés konfigurációs szójának 18. bitje be van kapcsolva.

Az alábbi minta a Transact-SQL használatával indít el egy kiterjesztett esemény munkamenetet, amely egy gyűrűpufferben lesz tárolva, és rögzíti az ügyféltől az RPC-n és a kötegműveleteken küldött tevékenységazonosítót.

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)

Lásd még