Delen via


SQL Trace

Van toepassing op:SQL Server

In SQL Trace worden gebeurtenissen verzameld als dit exemplaren zijn van gebeurtenisklassen die worden vermeld in de traceringsdefinitie. Deze gebeurtenissen kunnen uit de tracering worden gefilterd of in de wachtrij worden geplaatst voor de bestemming. De bestemming kan een bestand of SMO (SQL Server Management Objects) zijn, die de traceringsgegevens kunnen gebruiken in toepassingen die SQL Server beheren.

Belangrijk

SQL Trace en SQL Server Profiler zijn afgeschaft. De Microsoft.SqlServer.Management.Trace naamruimte die de Microsoft SQL Server Trace- en Replay-objecten bevat, worden ook afgeschaft.

Deze functie wordt verwijderd in een toekomstige versie van SQL Server. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie.

Gebruik in plaats daarvan uitgebreide gebeurtenissen. Zie Quick Start: Uitgebreide gebeurtenissen in SQL Server en SSMS XEvent Profiler voor meer informatie over uitgebreide gebeurtenissen.

Voordelen van SQL Trace

Microsoft SQL Server biedt systeem opgeslagen Transact-SQL procedures voor het maken van traces op een instance van de SQL Server Database Engine. Deze door het systeem opgeslagen procedures kunnen worden gebruikt vanuit uw eigen toepassingen om traceringen handmatig te maken in plaats van SQL Server Profiler te gebruiken. Hiermee kunt u aangepaste toepassingen schrijven die specifiek zijn voor de behoeften van uw onderneming.

SQL-traceringsarchitectuur

Gebeurtenisbronnen zijn elke bron die een traceringsgebeurtenis genereert, zoals Transact-SQL-batches of SQL Server-gebeurtenissen, zoals deadlocks. Zie referentiemateriaal voor SQL Server-gebeurtenisklassen voor meer informatie over gebeurtenissen. Nadat een gebeurtenis is opgetreden en de gebeurtenisklasse is opgenomen in een traceringsdefinitie, wordt de gebeurtenisinformatie door de tracering verzameld. Als filters zijn gedefinieerd voor de gebeurtenisklasse in de traceringsdefinitie, worden de filters toegepast en worden de traceringsgebeurtenisgegevens doorgegeven aan een wachtrij. Vanuit de wachtrij worden de traceringsgegevens naar een bestand geschreven of kunnen worden gebruikt door SMO in toepassingen, zoals SQL Server Profiler. In het volgende diagram ziet u hoe SQL Trace gebeurtenissen verzamelt tijdens een tracering.

Proces voor het traceren van gebeurtenissen van de Database Engine

SQL-traceringsterminologie

In de volgende termen worden de belangrijkste concepten van SQL Trace beschreven.

Event
Het optreden van een actie in een exemplaar van de Microsoft SQL Server Database Engine.

Gegevenskolom
Een kenmerk van een gebeurtenis.

Gebeurtenisklasse
Een type gebeurtenis dat kan worden getraceerd. De gebeurtenisklasse bevat alle gegevenskolommen die door een gebeurtenis kunnen worden gerapporteerd.

Gebeurteniscategorie
Een groep gerelateerde gebeurtenisklassen.

Trace (zelfstandig naamwoord)
Een verzameling gebeurtenissen en gegevens die worden geretourneerd door de database-engine.

Traceren (werkwoord)
Gebeurtenissen verzamelen en bewaken in een exemplaar van SQL Server.

Traceerdefinitie
Een verzameling gebeurtenisklassen, gegevenskolommen en filters die de typen gebeurtenissen identificeren die moeten worden verzameld tijdens een tracering.

Filteren
Criteria waarmee de gebeurtenissen die in een trace worden verzameld, worden beperkt.

Traceringsbestand
Een bestand dat wordt gemaakt wanneer een log wordt opgeslagen.

Template
In SQL Server Profiler definieert u een bestand dat de gebeurtenisklassen en gegevenskolommen definieert die moeten worden verzameld in een trace.

Traceringstabel
In SQL Server Profiler wordt een tabel gemaakt wanneer een tracering wordt opgeslagen in een tabel.

Gegevenskolommen gebruiken om geretourneerde gebeurtenissen te beschrijven

SQL Trace maakt gebruik van gegevenskolommen in de traceringsuitvoer om gebeurtenissen te beschrijven die worden geretourneerd wanneer de tracering wordt uitgevoerd. In de volgende tabel worden de gegevenskolommen van SQL Server Profiler beschreven. Dit zijn dezelfde gegevenskolommen als de kolommen die worden gebruikt door SQL Trace en geven de kolommen aan die standaard zijn geselecteerd.

Gegevenskolom Kolomnummer Description
* ApplicationName 10 De naam van de clientapplicatie die de verbinding met een instantie van SQL Server heeft gemaakt. Deze kolom wordt gevuld met de waarden die door de toepassing worden doorgegeven en niet de naam van het programma.
BigintData1 52 Waarde (bigint-gegevenstype ), die afhankelijk is van de gebeurtenisklasse die is opgegeven in de tracering.
BigintData2 53 Waarde (bigint-gegevenstype ), die afhankelijk is van de gebeurtenisklasse die is opgegeven in de tracering.
* Binaire gegevens 2 De binaire waarde is afhankelijk van de gebeurtenisklasse die in de trace wordt vastgelegd.
* ClientProcessID 9 De ID die door de hostcomputer is toegewezen aan het proces waarin de clientapplicatie draait. Deze gegevenskolom wordt ingevuld als de clientproces-id wordt opgegeven door de client.
ColumnPermissions 44 Geeft aan of er een kolomtoestemming is ingesteld. U kunt de instructietekst parseren om te bepalen welke machtigingen zijn toegepast op welke kolommen.
* CPU 18 De hoeveelheid CPU-tijd (in milliseconden) die door de gebeurtenis wordt gebruikt.
Database-id 3 De id van de database die is opgegeven met de instructie USE database_name of de id van de standaarddatabase als er geen USE database_name-instructieis uitgegeven voor een bepaald exemplaar. SQL Server Profiler toont de naam van de database als de ServerName-datakolom in de trace wordt vastgelegd en de server beschikbaar is. Bepaal de waarde voor een database met behulp van de functie DB_ID.
DatabaseName 35 De naam van de database waarin de gebruikersinstructie wordt uitgevoerd.
DBUserName 40 De SQL Server-gebruikersnaam van de client.
* tijdsduur 13 De duur (in microseconden) van de gebeurtenis.

De server rapporteert de duur van een gebeurtenis in microseconden (één miljoen of 10-6, van een seconde) en de hoeveelheid CPU-tijd die wordt gebruikt door de gebeurtenis in milliseconden (duizendde of 10-3, van een seconde). In de grafische gebruikersinterface van SQL Server Profiler wordt de kolom Duur standaard in milliseconden weergegeven, maar wanneer een tracering wordt opgeslagen in een bestand of een databasetabel, wordt de kolomwaarde Duur geschreven in microseconden.
* Eindtijd 15 Het tijdstip waarop de gebeurtenis is beëindigd. Deze kolom is niet ingevuld voor gebeurtenisklassen die verwijzen naar een gebeurtenis die wordt gestart, zoals SQL:BatchStarting of SP:Starting.
Error 31 Het foutnummer van een bepaalde gebeurtenis. Dit is vaak het foutnummer dat is opgeslagen in sysmessages.
* EventClass 27 Het type gebeurtenisklasse dat wordt vastgelegd.
EventSequence 51 Volgnummer voor dit evenement.
EventSubClass 21 Het type gebeurtenissubklasse, dat meer informatie biedt over elke gebeurtenisklasse. De waarden voor de gebeurtenissubklasse voor de gebeurtenisklasse Uitvoeringswaarschuwing vertegenwoordigen bijvoorbeeld het type uitvoeringswaarschuwing:

1 = Query wacht. De query moet wachten op resources voordat deze kan worden uitgevoerd; bijvoorbeeld geheugen.

2 = Time-out voor de query. Er is een time-out opgetreden voor de query tijdens het wachten op de vereiste resources om uitgevoerd te worden. Deze gegevenskolom wordt niet ingevuld voor alle gebeurtenisklassen.
GUID 54 GUID-waarde die afhankelijk is van de gebeurtenisklasse die is opgegeven in de tracering.
Bestandsnaam 36 De logische naam van het bestand dat wordt gewijzigd.
Hendel 33 De integer die wordt gebruikt door ODBC, OLE DB of DB-Library om de serveruitvoering te coördineren.
HostNaam 8 De naam van de computer waarop de client draait. Deze gegevenskolom wordt ingevuld als de hostnaam wordt opgegeven door de client. Om de hostnaam te bepalen, gebruik je de functie HOST_NAME.
IndexID 24 De id voor de index van het object waarop de gebeurtenis betrekking heeft. Om de index-ID van een object te bepalen, gebruik je de indo-kolom van de systeemtabel sysindexes .
IntegerData vijfentwintig De geheel getalwaarde die afhankelijk is van de gebeurtenisklasse die in de tracering is vastgelegd.
IntegerData2 55 De geheel getalwaarde die afhankelijk is van de gebeurtenisklasse die in de tracering is vastgelegd.
IsSystem- 60 Geeft aan of de gebeurtenis is opgetreden in een systeemproces of een gebruikersproces:

1 = systeem

0 = gebruiker
Lijnnummer 5 Bevat het nummer van de regel die de fout bevat. Voor gebeurtenissen die betrekking hebben op Transact-SQL instructies, zoals SP:StmtStarting, bevat het regelnummer van de instructie in de opgeslagen procedure of batch.
LinkedServerName 45 Naam van de gekoppelde server.
* Loginnaam 11 De naam van de inloggegevens van de gebruiker (ofwel SQL Server beveiligingslogin of de Windows-inloggegevens in de vorm van DOMAIN\Gebruikersnaam).
LoginSid 41 De beveiligings-id (SID) van de aangemelde gebruiker. U vindt deze informatie in de sys.server_principals weergave van de hoofddatabase . Elke aanmelding bij de server heeft een unieke id.
MethodName 47 Naam van de OLEDB-methode.
Mode 32 Het integer dat door verschillende gebeurtenissen wordt gebruikt om een status te beschrijven die door de gebeurtenis wordt aangevraagd of ontvangen is.
NestLevel 29 Het gehele getal dat de gegevens vertegenwoordigt die worden geretourneerd door @@NESTLEVEL.
NTDomainName 7 Het Microsoft Windows-domein waartoe de gebruiker behoort.
* NTUserName 6 De Gebruikersnaam van Windows.
ObjectID 22 De door het systeem toegewezen id van het object.
ObjectID2 56 De id van het gerelateerde object of de gerelateerde entiteit, indien beschikbaar.
Objectname 34 De naam van het object waarnaar wordt verwezen.
** ObjectType 28 De waarde die het type van het object aangeeft dat bij de gebeurtenis betrokken is. Deze waarde komt overeen met de typekolom in sysobjects.
Afstand 61 De begin-offset van de instructie binnen de opgeslagen procedure of batch.
OwnerID 58 Alleen voor vergrendelingsevenementen. Het type object dat eigenaar is van een vergrendeling.
EigenaarNaam 37 De gebruikersnaam van de database van de objecteigenaar.
Oudernaam 59 De naam van het schema waarin het object zich bevindt.
toestemmingen 19 De waarde van het gehele getal dat het type machtigingen aangeeft dat wordt gecontroleerd. Waarden zijn:

1 = ALLES SELECTEREN

2 = ALLES BIJWERKEN

4 = ALLE VERWIJZINGEN

8 = INSERT

16 = DELETE

32 = EXECUTE (alleen procedures)

4096 = SELECT ANY (ten minste één kolom)

8192 = WIJZIG ALLES

16384 = VERWIJZINGT IEDEREEN
ProviderName 46 Naam van de OLEDB-provider.
* Leest 16 Het aantal leesbewerkingen op de logische schijf die namens de gebeurtenis door de server worden uitgevoerd. Deze leesbewerkingen omvatten alle leesbewerkingen uit tabellen en buffers tijdens de uitvoering van de opdracht.
RequestID 49 ID van het verzoek dat de verklaring bevat.
RoleName 38 De naam van de toepassingsrol die wordt ingeschakeld.
RowCounts 48 Het aantal rijen in de batch.
Servernaam 26 De naam van het exemplaar van SQL Server dat wordt getraceerd.
SessionLoginName 64 De inlognaam van de gebruiker die de sessie heeft gestart. Als u bijvoorbeeld verbinding maakt met SQL Server met behulp van Login1 en een instructie uitvoert als Login2, geeft SessionLoginNameLogin1 weer terwijl LoginNameLogin2 weergeeft. In deze gegevenskolom worden zowel SQL Server- als Windows-aanmeldingen weergegeven.
Severity 20 Het ernstniveau van de uitzonderingsgebeurtenis.
SourceDatabaseID 62 De id van de database waarin de bron van het object bestaat.
* SPID 12 De sessie-id (SPID) die door SQL Server wordt toegewezen aan het proces dat is gekoppeld aan de client.
SqlHandle 63 64-bits hash gebaseerd op de tekst van een ad hoc-query of de database- en object-ID van een SQL-object. Deze waarde kan worden doorgegeven aan sys.dm_exec_sql_text() om de bijbehorende SQL-tekst op te halen.
* Starttime 14 Het tijdstip waarop het evenement begon, wanneer beschikbaar.
State 30 Foutstatuscode.
Succes 23 Geeft aan of de gebeurtenis is geslaagd. Waarden zijn onder andere:

1 = Geslaagd.

0 = Fout

Een 1 betekent bijvoorbeeld een geslaagde controle van machtigingen en een 0 betekent een mislukte controle.
TargetLoginName 42 Voor acties die gericht zijn op een aanmelding, de naam van de doelaanmelding; Als u bijvoorbeeld een nieuwe aanmelding wilt toevoegen.
TargetLoginSid 43 Voor acties die gericht zijn op een aanmelding, de SID van de doelaanmelding; Als u bijvoorbeeld een nieuwe aanmelding wilt toevoegen.
TargetUserName 39 Voor acties die gericht zijn op een databasegebruiker, de naam van die gebruiker; Als u bijvoorbeeld machtigingen wilt verlenen aan een gebruiker.
* TextData 1 De tekstwaarde is afhankelijk van de gebeurtenisklasse die in de tracering wordt vastgelegd. Als u echter een geparameteriseerde query traceert, worden de variabelen niet weergegeven met gegevenswaarden in de kolom TextData .
Transactie-id 4 De door het systeem toegewezen ID van de transactie.
Typ 57 De geheel getalwaarde die afhankelijk is van de gebeurtenisklasse die in de tracering is vastgelegd.
* Schrijft 17 Het aantal schrijfbewerkingen van fysieke schijven dat namens de gebeurtenis door de server wordt uitgevoerd.
XactSequence 50 Een token om de huidige transactie te beschrijven.

* Deze gegevenskolommen worden standaard ingevuld voor alle gebeurtenissen.

** Zie ObjectType Trace Event Column voor meer informatie over de kolom ObjectType-gegevens.

SQL-traceringstaken

Taakbeschrijving Onderwerp
Beschrijft hoe u traceringen maakt en uitvoert met behulp van Transact-SQL opgeslagen procedures. Traceringen maken en uitvoeren met Transact-SQL opgeslagen procedures
Hierin wordt beschreven hoe u handmatige traceringen maakt met behulp van opgeslagen procedures op een exemplaar van de SQL Server Database Engine. Handmatige traceringen maken met behulp van opgeslagen procedures
Beschrijft hoe u traceringsresultaten opslaat in het bestand waarin de traceringsresultaten worden geschreven. Traceringsresultaten opslaan in een bestand
Hierin wordt beschreven hoe u de toegang tot traceringsgegevens verbetert met behulp van ruimte in de tijdelijke map. Toegang tot traceringsgegevens verbeteren
Hierin wordt beschreven hoe u opgeslagen procedures gebruikt om een tracering te maken. Een tracering maken (Transact-SQL)
Beschrijft hoe u opgeslagen procedures gebruikt om een filter te maken dat alleen de informatie ophaalt die u nodig hebt voor een gebeurtenis die wordt getraceerd. Een traceringsfilter instellen (Transact-SQL)
Beschrijft hoe u opgeslagen procedures gebruikt om een bestaande tracering te wijzigen. Een bestaande tracering wijzigen (Transact-SQL)
Beschrijft hoe u ingebouwde functies gebruikt om een opgeslagen tracering weer te geven. Een opgeslagen trace (Transact-SQL) weergeven
Beschrijft hoe u ingebouwde functies gebruikt om traceringsfiltergegevens weer te geven. Filtergegevens weergeven (Transact-SQL)
Beschrijft hoe u opgeslagen procedures gebruikt om een tracering te verwijderen. Een tracering verwijderen (Transact-SQL)
Hierin wordt beschreven hoe u de prestatiekosten voor een tracering minimaliseert. SQL-trace optimaliseren
Beschrijft hoe u een trace filtert om de overhead die tijdens een trace ontstaat, te minimaliseren. Een tracering filteren
Beschrijft hoe u de hoeveelheid gegevens die door de tracering worden verzameld, minimaliseert. Grootte van traceringsbestand en tabel beperken
Beschrijft de twee manieren om tracering te plannen in Microsoft SQL Server. Traceringen plannen

Zie ook

SQL Server Profiler Sjablonen en Rechten
SMO-programmeerhandleiding (SQL Server Management Objects)