SQL-spårning

Gäller för:SQL Server

I SQL Trace samlas händelser in om de är instanser av händelseklasser som anges i spårningsdefinitionen. Dessa händelser kan filtreras bort från spårningen eller placeras i kö för att nå sin destination. Målet kan vara en fil eller SQL Server Management Objects (SMO), som kan använda spårningsinformationen i program som hanterar SQL Server.

Viktigt!

SQL Trace och SQL Server Profiler är inaktuella. Microsoft.SqlServer.Management.Trace namnområde som innehåller Microsoft SQL Server Trace- och Replay-objekten är också inaktuella.

Den här funktionen tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen.

Använd utökade händelser i stället. Mer information om extended eventsfinns i Snabbstart: Utökade händelser i SQL Server och SSMS XEvent Profiler.

Fördelar med SQL Trace

Microsoft SQL Server tillhandahåller Transact-SQL systemlagrade procedurer för att skapa spårningar på en instans av SQL Server Database Engine. Dessa systemlagrade procedurer kan användas inifrån dina egna program för att skapa spårningar manuellt i stället för att använda SQL Server Profiler. På så sätt kan du skriva anpassade program som är specifika för företagets behov.

SQL-spårningsarkitektur

Händelsekällor kan vara alla källor som skapar spårningshändelsen, till exempel Transact-SQL batchar eller SQL Server-händelser, till exempel dödlägen. Mer information om händelser finns i Referens för SQL Server-händelseklass. När en händelse inträffar, om händelseklassen har inkluderats i en spårningsdefinition, samlas händelseinformationen in av spårningen. Om filter har definierats för händelseklassen i spårningsdefinitionen tillämpas filtren och spårningshändelseinformationen skickas till en kö. Från kön skrivs spårningsinformationen antingen till en fil eller kan användas av SMO i program, till exempel SQL Server Profiler. Följande diagram visar hur SQL Trace samlar in händelser under en spårning.

Databasmotorns händelsespårningsprocess

SQL-spårningsterminologi

Följande termer beskriver huvudbegreppen i SQL Trace.

Event
Förekomsten av en åtgärd i en instans av Microsoft SQL Server Database Engine.

Datakolumn
Ett attribut för en händelse.

Händelseklass
En typ av händelse som kan spåras. Händelseklassen innehåller alla datakolumner som kan rapporteras av en händelse.

Händelsekategori
En grupp relaterade händelseklasser.

Spårning (substantiv)
En samling händelser och data som returneras av databasmotorn.

Spåra (verb)
Samla in och övervaka händelser i en instans av SQL Server.

Spårdefinition
En samling händelseklasser, datakolumner och filter som identifierar vilka typer av händelser som ska samlas in under en spårning.

Filter
Villkor som begränsar de händelser som samlas in i en spårning.

Spårningsfil
En fil som skapas när en spårning sparas.

Template
I SQL Server Profiler, en fil som definierar de händelseklasser och datakolumner som ska samlas in i en spårning.

Spårningstabell
I SQL Server Profiler, en tabell som skapas när en spårning sparas i en tabell.

Använda datakolumner för att beskriva returnerade händelser

SQL Trace använder datakolumner i spårningsutdata för att beskriva händelser som returneras när spårningen körs. I följande tabell beskrivs SQL Server Profiler-datakolumnerna, som är samma datakolumner som de som används av SQL Trace, och anger de kolumner som är markerade som standard.

Datakolumn Kolumnnummer Description
* ApplicationName 10 Namnet på klientapplikationen som skapade anslutningen till en instans av SQL Server. Den här kolumnen fylls i med de värden som skickas av programmet och inte namnet på programmet.
BigintData1 52 Värde (bigint-datatyp ), som är beroende av händelseklassen som anges i spårningen.
BigintData2 53 Värde (bigint-datatyp ), som är beroende av händelseklassen som anges i spårningen.
* Binära data 2 Det binära värdet som är beroende av händelseklassen som samlas in i traceloggen.
* ClientProcessID 9 Det ID som värddatorn tilldelar processen där klientapplikationen körs. Den här datakolumnen fylls i om klientprocess-ID:t tillhandahålls av klienten.
ColumnPermissions 44 Indikerar om en kolumnbehörighet sattes. Du kan parsa instruktionstexten för att avgöra vilka behörigheter som tillämpades på vilka kolumner.
* CPU 18 Mängden CPU-tid (i millisekunder) som används av händelsen.
Databas-ID 3 ID:t för databasen som anges av instruktionen USE database_name eller ID:t för standarddatabasen om ingen USE-database_name-instruktionhar utfärdats för en viss instans. SQL Server Profiler visar namnet på databasen om kolumnen ServerName-data fångas i spåret och servern är tillgänglig. Fastställa värdet för en databas med hjälp av funktionen DB_ID.
DatabaseName 35 Namnet på databasen där användardeklarationen körs.
DBUserName 40 SQL Server-användarnamnet för klienten.
* tidslängd 13 Varaktigheten (i mikrosekunder) för händelsen.

Servern rapporterar varaktigheten för en händelse i mikrosekunder (en miljondel, eller 10–6, av en sekund) och hur lång CPU-tid som händelsen använder i millisekunder (en tusendel eller 10–3, av en sekund). Det grafiska användargränssnittet för SQL Server Profiler visar kolumnen Varaktighet i millisekunder som standard, men när en spårning sparas i antingen en fil eller en databastabell skrivs kolumnvärdet Varaktighet i mikrosekunder.
* Sluttid 15 Tidpunkt då händelsen avslutades. Den här kolumnen fylls inte i för händelseklasser som refererar till en händelse som startar, till exempel SQL:BatchStarting eller SP:Starting.
Error 31 Felnumret för en viss händelse. Det här är ofta felnumret som lagras i sysmessages.
* EventClass 27 Den typ av händelseklass som fångas upp.
EventSequence 51 Sekvensnummer för detta evenemang.
EventSubClass 21 Typen av händelseunderklass, som ger ytterligare information om varje händelseklass. Händelseunderklassvärden för händelseklassen Körningsvarning representerar till exempel typen av körningsvarning:

1 = Frågekö. Frågan måste vänta på resurser innan den kan köras. till exempel minne.

2 = Begäran tidsgräns. Förfrågan tidsgränsade medan den väntade på att nödvändiga resurser skulle bli tillgängliga. Den här datakolumnen är inte ifylld för alla händelseklasser.
GUID 54 GUID-värde som är beroende av händelseklassen som anges i spårningen.
Filnamn 36 Det logiska namnet på filen som har ändrats.
Handtag 33 Det heltal som används av ODBC, OLE DB eller DB-Library för att samordna serverkörningen.
Värdnamn 8 Namnet på datorn som klienten körs på. Den här datakolumnen fylls i om värdnamnet tillhandahålls av klienten. För att bestämma värdnamnet, använd funktionen HOST_NAME.
IndexID 24 ID:t för indexet för det objekt som påverkas av händelsen. För att bestämma index-ID för ett objekt, använd kolumnen indid i sysindexes systemtabell.
IntegerData 25 Heltalsvärdet som beror på händelseklassen som fångas i spårningen.
IntegerData2 55 Heltalsvärdet som är beroende av händelseklassen som samlas in i spårningsinformationen.
IsSystem 60 Anger om händelsen inträffade i en systemprocess eller en användarprocess:

1 = system

0 = användare
Radnummer 5 Innehåller numret på den rad som innehåller felet. För händelser som involverar Transact-SQL-instruktioner, till exempel SP:StmtStarting, innehåller LineNumber radnumret för -instruktionen i den lagrade proceduren eller batchen.
LinkedServerName 45 Namnet på den länkade servern.
* LoginName 11 Namnet på användarens inloggning (antingen SQL Server-säkerhetsinloggning eller Windows-inloggningsuppgifterna i form av DOMÄN\Användarnamn).
LoginSid 41 Säkerhetsidentifieraren (SID) för den inloggade användaren. Du hittar den här informationen i sys.server_principals vy över huvuddatabasen . Varje inloggning till servern har ett unikt ID.
MethodName 47 Namnet på OLEDB-metoden.
Läge 32 Det heltal som används av olika händelser för att beskriva ett tillstånd som händelsen begär eller har mottagit.
NestLevel 29 Det heltal som representerar de data som returneras av @@NESTLEVEL.
NTDomainName 7 Den Microsoft Windows-domän som användaren tillhör.
* NTUserName 6 Windows-användarnamnet.
ObjectID 22 Objektets systemtilldelade ID.
ObjectID2 56 ID för det relaterade objektet eller entiteten, om det är tillgängligt.
ObjectName 34 Namnet på det objekt som refereras till.
** ObjectType 28 Värdet som representerar typen av objekt som ingår i händelsen. Det här värdet motsvarar typkolumnen i sysobjects.
Uppväga 61 Startförskjutningen av instruktionen inom den lagrade proceduren eller batchen.
OwnerID 58 Endast för låshändelser. Typen av objekt som äger ett lås.
ÄgarNamn 37 Databasanvändarnamnet för objektägaren.
ParentName 59 Namnet på schemat där objektet finns.
behörigheter 19 Heltalsvärdet som representerar den typ av behörigheter som markerats. Värden är:

1 = VÄLJ ALLA

2 = UPPDATERA ALLA

4 = REFERENSER ALLA

8 = INSERT

16 = TA BORT

32 = KÖR (endast procedurer)

4096 = VÄLJ ALLA (minst en kolumn)

8192 = UPPDATERA ALLA

16384 = REFERENSER VILKEN SOM HELST
ProviderName 46 Namnet på OLEDB-providern.
* Läser 16 Antalet läsåtgärder på den logiska disk som utförs av servern för händelsens räkning. Dessa läsåtgärder omfattar alla läsningar från tabeller och buffertar under utförandet av instruktionen.
RequestID 49 ID på förfrågan som innehåller uttalandet.
RoleName 38 Namnet på den programroll som aktiveras.
RowCounts 48 Antalet rader i batchen.
ServerName 26 Namnet på den SQL Server-instans som spåras.
SessionLoginName 64 Inloggningsnamnet på användaren som startade sessionen. Om du till exempel ansluter till SQL Server med Login1 och kör en instruktion som Login2, visar SessionLoginNameLogin1, medan LoginName visar Login2. Den här datakolumnen visar både SQL Server- och Windows-inloggningar.
Severity 20 Allvarlighetsgraden för undantagshändelsen.
SourceDatabaseID 62 ID:t för databasen där objektets källa finns.
* SPID 12 Sessions-ID (SPID) som tilldelas av SQL Server till den process som är associerad med klienten.
SqlHandle 63 64-bitars hash baserad på texten i en ad hoc-fråga eller databas- och objekt-ID för ett SQL-objekt. Det här värdet kan skickas till sys.dm_exec_sql_text() för att hämta den associerade SQL-texten.
* Starttime 14 Den tidpunkt då evenemanget startade, när det var tillgängligt.
State 30 Feltillståndskod.
Framgång 23 Representerar om händelsen lyckades. Värden inkluderar:

1 = Lyckades.

0 = Fel

Till exempel innebär en 1 en lyckad behörighetskontroll, och en 0 innebär en misslyckad kontroll.
TargetLoginName 42 För åtgärder som riktar sig mot en inloggning, namnet på den riktade inloggningen; om du till exempel vill lägga till en ny inloggning.
TargetLoginSid 43 För åtgärder som riktar sig mot en inloggning, SID för den riktade inloggningen; om du till exempel vill lägga till en ny inloggning.
TargetUserName 39 För åtgärder som riktar sig mot en databasanvändare, namnet på den användaren; till exempel för att bevilja behörighet till en användare.
* TextData 1 Textvärdet är beroende av händelseklassen som samlas in i spårningen. Men om du spårar en parametriserad fråga visas inte variablerna med datavärden i kolumnen TextData .
Transaktions-ID 4 Det systemtilldelade ID:t för transaktionen.
Type 57 Heltalsvärdet som är beroende av händelseklassen som samlas in i spårningsinformationen.
* Skriver 17 Antalet fysiska diskskrivningsåtgärder som utförs av servern för händelsens räkning.
XactSequence 50 En token som beskriver den aktuella transaktionen.

* Dessa datakolumner fylls som standard för alla händelser.

** Mer information om datakolumnen ObjectType finns i ObjectType Trace Event Column.

SQL-spårningsuppgifter

Aktivitetsbeskrivning Ämne
Beskriver hur du skapar och kör spårningar med hjälp av Transact-SQL lagrade procedurer. Skapa och köra spårningar med hjälp av Transact-SQL lagrade procedurer
Beskriver hur du skapar manuella spårningar med lagrade procedurer på en instans av SQL Server Database Engine. Skapa manuella spårningar med lagrade procedurer
Beskriver hur du sparar spårningsresultat i filen där spårningsresultatet skrivs. Spara spårningsresultat i en fil
Beskriver hur du förbättrar åtkomsten till spårningsdata med hjälp av utrymme i temp-katalogen . Förbättra åtkomsten till spårningsdata
Beskriver hur du använder lagrade procedurer för att skapa en spårning. Skapa en spårning (Transact-SQL)
Beskriver hur du använder lagrade procedurer för att skapa ett filter som endast hämtar den information du behöver om en händelse som spåras. Ange ett spårningsfilter (Transact-SQL)
Beskriver hur du använder lagrade procedurer för att ändra en befintlig spårning. Ändra en befintlig spårning (Transact-SQL)
Beskriver hur du använder inbyggda funktioner för att visa en sparad spårning. Visa en sparad spårning (Transact-SQL)
Beskriver hur du använder inbyggda funktioner för att visa information om spårningsfilter. Visa Filter Information (Transact-SQL)
Beskriver hur du använder lagrade procedurer för att ta bort en spårning. Ta bort en spårning (Transact-SQL)
Beskriver hur du minimerar prestandakostnaden för en spårning. Optimera SQL-spårning
Beskriver hur du filtrerar en spårning för att minimera de kostnader som uppstår under en spårning. Filtrera en spårning
Beskriver hur du minimerar mängden data som spårningen samlar in. Begränsa spårningsfil- och tabellstorlekar
Beskriver de två sätten att schemalägga spårning i Microsoft SQL Server. Schemalägga spårningar

Se även

SQL Server Profiler-mallar och behörigheter
programmeringsguide för SQL Server Management Objects (SMO)