Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
ADO.NET beschikt over ingebouwde functionaliteit voor gegevenstracering die wordt ondersteund door de .NET-gegevensproviders voor SQL Server, Oracle, OLE DB en ODBC, evenals de ADO.NET DataSeten de SQL Server-netwerkprotocollen.
Api-aanroepen voor gegevenstoegang traceren kunnen helpen bij het vaststellen van de volgende problemen:
Schema-verschil tussen het client-programma en de database.
Problemen met onbeschikbaarheid van de database of netwerkbibliotheekproblemen.
Onjuiste SQL, ongeacht of deze in code is vastgelegd of gegenereerd door een toepassing.
Onjuiste programmeerlogica.
Problemen die het gevolg zijn van de interactie tussen meerdere ADO.NET onderdelen of tussen ADO.NET en uw eigen onderdelen.
Voor de ondersteuning van verschillende traceringstechnologieën is tracering uitbreidbaar, zodat een ontwikkelaar een probleem kan traceren op elk niveau van de toepassingsstack. Hoewel tracering geen functie is die alleen ADO.NET betreft, maken Microsoft-providers gebruik van gegeneraliseerde tracering- en instrumentatie-API's.
Zie Traceringsgegevenstoegang voor meer informatie over het instellen en configureren van beheerde tracering in ADO.NET.
Toegang tot diagnostische gegevens in het uitgebreide gebeurtenissenlogboek
In de .NET Framework-gegevensprovider voor SQL Server is gegevenstoegangstracering (Data Access Tracing) bijgewerkt om het gemakkelijker te maken clientgebeurtenissen te correleren met diagnostische gegevens, zoals verbindingsfouten, van de buffer voor de connectiviteitsring van de server en de prestatiegegevens van de toepassing in het uitgebreide gebeurtenissenlogboek. Zie Gebeurtenissessiegegevens weergevenvoor meer informatie over het lezen van het uitgebreide gebeurtenissenlogboek.
Voor verbindingsbewerkingen verzendt ADO.NET een clientverbindings-id. Als de verbinding mislukt, hebt u toegang tot de connectiviteitsringsbuffer (Connectiviteitsproblemen oplossen in SQL Server 2008 met de connectiviteitsringsbuffer) en zoekt u het ClientConnectionID veld en krijgt u diagnostische informatie over de verbindingsfout. Clientverbindings-id's worden alleen in de ringbuffer geregistreerd als er een fout optreedt. (Als een verbinding mislukt voordat het prelogin-pakket wordt verzonden, wordt er geen clientverbindings-id gegenereerd.) De clientverbindings-id is een GUID van 16 bytes. U kunt de clientverbindings-id ook vinden in de doeluitvoer van uitgebreide gebeurtenissen als de client_connection_id-actie wordt toegevoegd aan gebeurtenissen in een uitgebreide gebeurtenissessie. U kunt tracering van gegevenstoegang inschakelen en de verbindingsopdracht opnieuw uitvoeren en het ClientConnectionID veld in de gegevenstoegangstracering observeren als u meer diagnostische hulp van clientstuurprogramma's nodig hebt.
U kunt de clientverbindings-id programmatisch ophalen met behulp van de SqlConnection.ClientConnectionID eigenschap.
Het ClientConnectionID object is beschikbaar voor een SqlConnection object waarmee een verbinding tot stand is gebracht. Als een verbindingspoging mislukt, is ClientConnectionID mogelijk beschikbaar via SqlException.ToString.
ADO.NET verzendt ook een threadspecifieke activiteits-id. De activiteits-id wordt vastgelegd in de uitgebreide gebeurtenissessies als de sessies worden gestart met de optie TRACK_CAUSALITY is ingeschakeld. Voor prestatieproblemen met een actieve verbinding kunt u de activiteit-id ophalen uit de gegevenstoegangstracering (ActivityID veld) van de client en vervolgens de activiteit-id zoeken in de uitvoer van uitgebreide gebeurtenissen. De activiteits-id in uitgebreide gebeurtenissen is een GUID van 16 bytes (niet hetzelfde als de GUID voor de clientverbindings-id) die is toegevoegd aan een reeksnummer van vier byte. Het volgnummer vertegenwoordigt de volgorde van een aanvraag binnen een thread en geeft de relatieve volgorde van batch- en RPC-instructies voor de thread aan. Het ActivityID wordt momenteel optioneel uitgevoerd voor SQL-batchinstructies en RPC-aanvragen wanneer tracering van gegevenstoegang is ingeschakeld en de 18e bit in het configuratiewoord voor tracering van gegevenstoegang is ingeschakeld.
Hier volgt een voorbeeld dat gebruikmaakt van Transact-SQL om een uitgebreide gebeurtenissessie te starten die wordt opgeslagen in een ringbuffer en de activiteits-id registreert die is verzonden vanaf een client op RPC en batchbewerkingen.
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)