Megosztás:


Adatkövetés az SqlClientben

A következőre vonatkozik: .NET Framework .NET .NET Standard

ADO.NET letöltése

A .NET beépített adatkövetési funkciókat kínál, amelyeket a Microsoft SqlClient adatszolgáltató támogat az SQL Serverhez és az SQL Server hálózati protokollokhoz.

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.

  • Az SQL Serverhez készült Microsoft SqlClient-adatszolgáltató és a saját összetevői 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. Az SQL Serverhez készült Microsoft SqlClient-adatszolgáltató kihasználja az általános nyomkövetési és instrumentációs API-kat.

A felügyelt nyomkövetés .NET-ben való beállításával és konfigurálásával kapcsolatos további információkért lásd: Nyomkövetési adathozzáférés.

Diagnosztikai információk elérése a kiterjesztett eseménynaplóban

Az SQL ServerHez készült Microsoft SqlClient-adatszolgáltatóban az adatelérési nyomkövetés megkönnyíti az ügyfélesemények és a kiszolgáló kapcsolati gyűrűjének pufferéből származó diagnosztikai adatok, például a kapcsolati hibák és az alkalmazások teljesítményadatainak összekapcsolását a kiterjesztett eseménynaplóban. 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.

A kapcsolati műveletekhez az SQL Server Microsoft SqlClient adatszolgáltatója 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 a kapcsolat az előre beküldött 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.

Megjegyzés:

Az SQL Serverhez készült Microsoft SqlClient-adatszolgáltató támogatja a munkamenet-azonosítót (SPID) a 2.1.0-s verzió óta. Programozottan szerezheti meg a SqlConnection.ServerProcessId tulajdonság használatával.

Az ClientConnectionID és ServerProcessId elérhető egy SqlConnection olyan objektumhoz, amely sikeresen létesít kapcsolatot. Ha egy kapcsolati kísérlet meghiúsul, előfordulhat, hogy a ClientConnectionID a SqlException.ToString keresztül elérhető.

Az SQL Serverhez készült Microsoft SqlClient-adatszolgáltató 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 4 bájtos sorozatszámmal hozzáfűzött 16 bájtos GUID (nem ugyanaz, mint az ügyfélkapcsolat-azonosító GUID azonosítója). 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 SQL-utasítás egy minta, amely Transact-SQL-t használ egy kiterjesztett események munkamenetének elindításához, amelyet egy gyűrű pufferben tárolnak, és amely rögzíti az RPC-n és a kötegműveleteken keresztül az ügyféltől 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