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)