Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 kizárólag az ADO.NET funkciója, a Microsoft szolgáltatói kihasználják az általános nyomkövetési és felügyeleti API-kat.
A felügyelt nyomkövetés ADO.NET történő 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 Serverhez készült .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 információkkal, 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ésecí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 (az SQL Server 2008 kapcsolati hibaelhárítása a kapcsolati gyűrű pufferével), é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.
A ClientConnectionID egy SqlConnection objektumhoz érhető el, amely sikeresen létrehozott egy kapcsolatot. Ha egy kapcsolódási kísérlet meghiúsul, ClientConnectionID elérhető lehet SqlException.ToString keresztül.
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 példa bemutatja, hogyan lehet egy Transact-SQL parancs segítségével elindítani egy kiterjesztett eseménymunkamenetet, amelyet egy gyűrűpufferben tárolnak, és amely rögzíti az ügyféltől RPC-n és kötegműveleteken keresztül érkező 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)