Delen via


Gegevenstracering in SqlClient

Van toepassing op: .NET Framework .NET Standard

ADO.NET downloaden

.NET biedt ingebouwde functionaliteit voor gegevenstracering die wordt ondersteund door de Microsoft SqlClient Data Provider voor SQL Server- en SQL Server-netwerkprotocollen.

Api-aanroepen voor gegevenstoegang traceren kunnen helpen bij het vaststellen van de volgende problemen:

  • Schema komt niet overeen tussen het clientprogramma en de database.

  • Problemen met de beschikbaarheid van de database of problemen met de netwerkbibliotheek.

  • 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 Microsoft SqlClient Data Provider voor SQL Server 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. De Microsoft SqlClient-gegevensprovider voor SQL Server maakt gebruik van gegeneraliseerde tracerings- en instrumentatie-API's.

Zie Traceringsgegevenstoegang voor meer informatie over het instellen en configureren van beheerde tracering in .NET.

Toegang tot diagnostische gegevens in het uitgebreide gebeurtenissenlogboek

In de Microsoft SqlClient-gegevensprovider voor SQL Server maakt Data Access Tracing het eenvoudiger om clientevenementen te correleren met diagnostische gegevens, zoals verbindingsfouten, uit de buffer van de connectiviteitsring en toepassingsprestaties van de server in het uitgebreide gebeurtenissenlogboek. Zie Gebeurtenissessiegegevens weergeven voor meer informatie over het lezen van het uitgebreide gebeurtenissenlogboek.

Voor verbindingsbewerkingen verzendt de Microsoft SqlClient-gegevensprovider voor SQL Server 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 ook de clientverbinding-ID vinden in de uitvoer van het doel 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.

Opmerking

De Microsoft SqlClient Data Provider voor SQL Server ondersteunt de sessie-id (SPID) sinds versie 2.1.0. U kunt het programmatisch ophalen met behulp van de SqlConnection.ServerProcessId eigenschap.

De ClientConnectionID en ServerProcessId zijn beschikbaar voor een SqlConnection object waarmee een verbinding tot stand is gebracht. Als een verbindingspoging mislukt, kan ClientConnectionID mogelijk beschikbaar zijn via SqlException.ToString.

De Microsoft SqlClient-gegevensprovider voor SQL Server 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 activiteits-id ophalen uit het gegevenstoegangstracering (ActivityID veld) van de client en vervolgens de activiteits-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 4 bytes. 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 verzonden voor SQL-batchverklaringen en RPC-aanvragen wanneer tracering van gegevenstoegang is ingeschakeld en de 18e bit in het configuratiewoord voor die tracering aan staat.

De volgende SQL-instructie is 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)

Zie ook