SQL Trace

A következőkre vonatkozik:SQL Server

Az SQL Trace-ben az események akkor lesznek összegyűjtve, ha azok a nyomkövetési definícióban felsorolt eseményosztályok példányai. Ezek az események szűrhetők a nyomkövetésből, vagy várólistára állíthatók a céljukhoz. A cél lehet fájl vagy SQL Server Management Objects (SMO), amely az SQL Servert kezelő alkalmazások nyomkövetési információit használhatja.

Fontos

Az SQL Trace és az SQL Server Profiler elavult. A Microsoft SQL Server nyomkövetési és visszajátszási objektumait tartalmazó Microsoft.SqlServer.Management.Trace névtér is elavult.

Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását.

Használja helyette a Bővített események parancsot. Kiterjesztett események további információiért tekintse meg a következőket: Gyors kezdési útmutató: Kiterjesztett események az SQL Serverben, valamint az SSMS XEvent Profiler.

Az SQL Trace előnyei

A Microsoft SQL Server Transact-SQL rendszer által tárolt eljárásokat biztosít nyomkövetések létrehozásához az SQL Server adatbázismotor egy példányán. Ezek a rendszer által tárolt eljárások a saját alkalmazásaiból használhatók nyomkövetések manuális létrehozásához az SQL Server Profiler használata helyett. Ez lehetővé teszi, hogy egyéni alkalmazásokat írjon a vállalat igényeinek megfelelően.

SQL Trace-architektúra

Az eseményforrás lehet bármilyen forrás, amely létrehozza a nyomkövetési eseményt, például Transact-SQL kötegeket vagy SQL Server-eseményeket, például holtpontokat. Az eseményekkel kapcsolatos további információkért lásd az SQL Server eseményosztályának referenciáját. Az esemény bekövetkezése után, ha az eseményosztály szerepel egy nyomkövetési definícióban, az eseményinformációkat a nyomkövetés gyűjti össze. Ha a nyomkövetési definícióban szűrők lettek definiálva az eseményosztályhoz, a rendszer alkalmazza a szűrőket, és a nyomkövetési esemény adatait egy üzenetsorba továbbítja. Az üzenetsorból a nyomkövetési információk vagy fájlba íródnak, vagy az SMO felhasználhatja az alkalmazásokban, például az SQL Server Profilerben. Az alábbi ábra bemutatja, hogyan gyűjti össze az SQL Trace az eseményeket a nyomkövetés során.

Adatbázismotor eseménykövetési folyamata

SQL Trace terminológia

Az alábbi kifejezések az SQL Trace fő fogalmait írják le.

Event
Művelet előfordulása a Microsoft SQL Server adatbázismotor egy példányán belül.

Adatoszlop
Egy esemény attribútuma.

Eseményosztály
Nyomon követhető eseménytípus. Az eseményosztály tartalmazza az esemény által jelentett összes adatoszlopot.

Eseménykategória
Kapcsolódó eseményosztályok csoportja.

Nyomkövetés (főnév)
Az adatbázismotor által visszaadott események és adatok gyűjteménye.

Nyomon követ (ige)
Események gyűjtése és figyelése az SQL Server egy példányában.

Nyomkövetési meghatározás
Eseményosztályok, adatoszlopok és szűrők gyűjteménye, amelyek azonosítják a nyomkövetés során gyűjtendő események típusait.

Szűrő
A nyomkövetésben gyűjtött eseményeket korlátozó feltételek.

Nyomkövetési fájl
Nyomkövetés mentésekor létrehozott fájl.

Template
Az SQL Server Profilerben egy fájl, amely meghatározza a nyomkövetésben összegyűjtendő eseményosztályokat és adatoszlopokat.

Nyomkövetési tábla
Az SQL Server Profilerben egy tábla jön létre, amely akkor jön létre, amikor a rendszer egy táblába menti a nyomkövetést.

Adatoszlopok használata a visszaadott események leírásához

Az SQL Trace a nyomkövetési kimenet adatoszlopait használja a nyomkövetés futtatásakor visszaadott események leírására. Az alábbi táblázat az SQL Server Profiler adatoszlopait ismerteti, amelyek ugyanazok az adatoszlopok, mint amelyeket az SQL Trace használ, és az alapértelmezés szerint kijelölt oszlopokat jelzi.

Adatoszlop Oszlopszám Description
* ApplicationName 10 Az ügyfélalkalmazás neve, amely létrehozta a kapcsolatot egy SQL Server példányához. Ez az oszlop az alkalmazás által átadott értékekkel van feltöltve, nem pedig a program nevével.
BigintData1 52 Érték (bigint adattípus), amely a nyomkövetésben megadott eseményosztálytól függ.
BigintData2 53 Érték (bigint adattípus), amely a nyomkövetésben megadott eseményosztálytól függ.
* Bináris adatok 2 A nyomkövetésben rögzített eseményosztálytól függő bináris érték.
* ClientProcessID 9 Az azonosító, amelyet a hostszámítógép rendel a kliens alkalmazás futtató folyamatához. Ez az adatoszlop akkor lesz feltöltve, ha az ügyfél megadja az ügyfél folyamatazonosítóját.
ColumnPermissions 44 Jelzi, hogy beállították-e oszlopengedélyt. Elemezheti az utasítás szövegét annak megállapításához, hogy mely oszlopokra alkalmazták az engedélyeket.
* CPU 18 Az esemény által használt processzoridő (ezredmásodpercben).
Adatbázis-azonosító 3 A USE database_name utasítás által megadott adatbázis azonosítója, vagy az alapértelmezett adatbázis azonosítója, ha egy adott példányhoz nem adtak ki USE database_nameutasítást. Az SQL Server Profiler megjeleníti az adatbázis nevét, ha a ServerName adatoszlop rögzítésre kerül a nyomkövetésben, és a szerver elérhető. Határozza meg az adatbázis értékét a DB_ID függvénnyel.
DatabaseName 35 Annak az adatbázisnak a neve, amelyben a felhasználói utasítás fut.
DBUserName 40 Az ügyfél SQL Server-felhasználóneve.
* Időtartam 13 Az esemény időtartama (mikroszekundumban).

A kiszolgáló egy esemény időtartamát mikroszekundumban (egymilliomodik vagy 10-6 másodpercben) és az esemény által használt processzoridőt ezredmásodpercben (egy másodperc ezredmásodpercben vagy 10-3-ban) jelenti. Az SQL Server Profiler grafikus felhasználói felülete alapértelmezés szerint ezredmásodpercben jeleníti meg az Időtartam oszlopot, de ha egy nyomkövetést fájlba vagy adatbázistáblába ment, az Időtartam oszlop értéke mikroszekundumokban lesz megírva.
* EndTime 15 Az esemény befejezésének időpontja. Ez az oszlop nem töltődik fel olyan eseményosztályok esetében, amelyek elindítható eseményre hivatkoznak, például SQL:BatchStarting vagy SP:Starting.
Error 31 Egy adott esemény hibaszáma. Gyakran ez a sysmessagesben tárolt hibaszám.
* EventClass 27 A rögzített eseményosztály típusa.
EventSequence 51 Ennek az eseménynek a sorrendszáma.
EventSubClass 21 Az esemény alosztályának típusa, amely további információkat nyújt az egyes eseményosztályokról. A Végrehajtási figyelmeztetés eseményosztály eseményosztályának eseményosztály-értékei például a végrehajtási figyelmeztetés típusát jelölik:

1 = Lekérdezési várakozás. A lekérdezésnek meg kell várnia az erőforrásokat a végrehajtás előtt; például memória.

2 = Lekérdezés időtúllépése. A lekérdezés időtúllépést tapasztalt, miközben a szükséges erőforrások végrehajtására várt. Ez az adatoszlop nem minden eseményosztályhoz van feltöltve.
GUID 54 GUID-érték, amely a nyomkövetésben megadott eseményosztálytól függ.
Fájlnév 36 A módosított fájl logikai neve.
Fogantyú 33 Az ODBC, OLE DB vagy DB-Library által a kiszolgáló végrehajtásának koordinálásához használt egész szám.
Állomásnév 8 Az a számítógép neve, amelyen a kliens fut. Ez az adatoszlop akkor lesz feltöltve, ha az ügyfél megadja a gazdagép nevét. A gazdanév meghatározásához használja az HOST_NAME függvényt.
IndexID 24 Az esemény által érintett objektum indexének azonosítója. Az objektum index azonosítójának meghatározásához használja a sysindexes rendszer tábla indid oszlopát.
IntegerData 25 A nyomkövetésben rögzített eseményosztálytól függő egész szám.
IntegerData2 55 A nyomkövetésben rögzített eseményosztálytól függő egész szám.
IsSystem 60 Azt jelzi, hogy az esemény rendszerfolyamaton vagy felhasználói folyamaton történt-e:

1 = rendszer

0 = felhasználó
LineNumber 5 A hibát tartalmazó sor számát tartalmazza. Az olyan eseményeknél, amelyek Transact-SQL utasításokat tartalmaznak( például SP:StmtStarting), a LineNumber a tárolt eljárásban vagy kötegben tartalmazza az utasítás sorszámát.
LinkedServerName 45 A linkelt szerver neve.
* LoginName 11 A felhasználó bejelentkezésének neve (akár SQL Server biztonsági bejelentkezés, akár a Windows bejelentkezési adatai DOMAIN\Felhasználónév formájában).
LoginSid 41 A bejelentkezett felhasználó biztonsági azonosítója (SID). Ezeket az információkat a főadatbázissys.server_principals nézetében találja. A kiszolgálóra való minden bejelentkezés egyedi azonosítóval rendelkezik.
MethodName 47 Az OLEDB metódus neve.
Mode 32 A különböző események által az esemény által kért vagy fogadott állapot leírására használt egész szám.
NestLevel 29 A @@NESTLEVEL által visszaadott adatokat képviselő egész szám.
NTDomainName 7 Az a Microsoft Windows-tartomány, amelyhez a felhasználó tartozik.
* NTUserName 6 A Windows felhasználóneve.
ObjectID 22 Az objektum rendszer által hozzárendelt azonosítója.
ObjectID2 56 Ha elérhető, a kapcsolódó objektum vagy entitás azonosítója.
ObjectName 34 A hivatkozott objektum neve.
** ObjectType 28 Az eseményben érintett objektum típusát képviselő érték. Ez az érték a sysobjects típusoszlopának felel meg.
Ellensúlyoz 61 Az utasítás kezdő eltolása a tárolt eljáráson vagy kötegen belül.
OwnerID 58 Csak zárolási események esetén. A zárolást tartalmazó objektum típusa.
Tulajdonosnév 37 Az objektum tulajdonosának adatbázis-felhasználóneve.
ParentName 59 Annak a sémának a neve, amelyben az objektum található.
Permissions 19 Az ellenőrzött engedélyek típusát jelző egész szám. Az értékek a következők:

1 = AZ ÖSSZES KIJELÖLÉSE

2 = Az összes frissítése

4 = ÖSSZES HIVATKOZÁS

8 = INSERT

16 = DELETE

32 = VÉGREHAJTÁS (csak eljárások)

4096 = SELECT ANY (legalább egy oszlop)

8192 = BÁRMIT FRISSÍTHET

16384 = BÁRMELY HIVATKOZÁS
ProviderName 46 Az OLEDB-szolgáltató neve.
* Olvas 16 A logikai lemez olvasási műveleteinek száma, amelyeket a kiszolgáló hajt végre az esemény nevében. Ezek az olvasási műveletek tartalmazzák az utasítás végrehajtása során a táblákból és pufferekből származó összes olvasást.
RequestID 49 Az utasítást tartalmazó kérés azonosítója.
RoleName 38 Az engedélyezve lévő alkalmazásszerepkör neve.
RowCounts 48 A köteg sorainak száma.
Kiszolgálónév 26 A nyomon követendő SQL Server-példány neve.
SessionLoginName 64 A felhasználó bejelentkezési neve, aki a játékmenetet indította. Ha például a Login1 használatával csatlakozik az SQL Serverhez, és egy utasítást hajt végre Login2-ként, a SessionLoginName megjeleníti a Login1-et, míg a LoginName a Login2-t. Ez az adatoszlop SQL Server- és Windows-bejelentkezéseket is megjelenít.
Severity 20 A kivételesemény súlyossági szintje.
SourceDatabaseID 62 Annak az adatbázisnak az azonosítója, amelyben az objektum forrása létezik.
* SPID 12 Az SQL Server által az ügyfélhez társított folyamathoz hozzárendelt munkamenet-azonosító (SPID).
SqlHandle 63 64 bites hash, amely egy ad hoc lekérdezés szövegén vagy egy SQL objektum adatbázis- és objektumazonosítóján alapul. Ez az érték átadható sys.dm_exec_sql_text() számára a társított SQL-szöveg lekéréséhez.
* StartTime 14 Az esemény kezdetének időpontja, amikor elérhető.
State 30 Hibaállapot-kód.
Siker 23 Azt jelzi, hogy az esemény sikeres volt-e. Az értékek többek között az alábbiak lehetnek:

1 = Siker.

0 = Hiba

Az 1 például sikeres engedélyellenőrzést, a 0 pedig sikertelen ellenőrzést jelent.
TargetLoginName 42 Bejelentkezést célzó műveletek esetén a célként megadott bejelentkezés neve; például új bejelentkezés hozzáadásához.
TargetLoginSid 43 A bejelentkezést célzó műveletek esetén a célként megadott bejelentkezés SID-azonosítója; például új bejelentkezés hozzáadásához.
TargetUserName 39 Adatbázis-felhasználót célzó műveletek esetén a felhasználó neve; például engedélyt adhat egy felhasználónak.
* TextData 1 A nyomkövetésben rögzített eseményosztálytól függő szöveges érték. Ha azonban paraméteres lekérdezést követ nyomon, a változók nem jelennek meg adatértékekkel a TextData oszlopban.
Tranzakcióazonosító 4 A tranzakció rendszer által kiosztott azonosítója.
Típus 57 A nyomkövetésben rögzített eseményosztálytól függő egész szám.
* Írja 17 Azon fizikai lemezírási műveletek száma, amelyeket a kiszolgáló hajt végre az esemény nevében.
XactSequence 50 Az aktuális tranzakciót leíró token.

* Ezek az adatoszlopok alapértelmezés szerint minden eseményhez fel vannak töltve.

** További információ az ObjectType adatoszlopról: ObjectType Trace Event Column.

SQL-nyomkövetési feladatok

Tevékenység leírása Téma
Ismerteti, hogyan hozhat létre és futtathat nyomkövetéseket Transact-SQL tárolt eljárások használatával. Nyomkövetések létrehozása és futtatása Transact-SQL tárolt eljárások használatával
Ismerteti, hogyan hozhat létre manuális nyomkövetéseket tárolt eljárásokkal az SQL Server-adatbázismotor egy példányán. Manuális nyomkövetések létrehozása tárolt eljárások használatával
Ismerteti, hogyan mentheti a nyomkövetési eredményeket arra a fájlra, amelyben a nyomkövetési eredmények meg vannak írva. Nyomkövetési eredmények mentése fájlba
Leírja, hogyan javítható a nyomkövetési adatokhoz való hozzáférés a temp könyvtárban rendelkezésre álló tárhely használatával. A nyomkövetési adatokhoz való hozzáférés javítása
Azt ismerteti, hogyan hozhat létre nyomkövetést tárolt eljárásokkal. Nyomkövetés létrehozása (Transact-SQL)
Azt ismerteti, hogyan hozhat létre tárolt eljárásokat olyan szűrő létrehozásához, amely csak a nyomkövetés alatt álló eseményhez szükséges információkat kéri le. Nyomkövetési szűrő beállítása (Transact-SQL)
Azt ismerteti, hogyan lehet tárolt eljárásokat használni egy meglévő nyomkövetés módosításához. Meglévő nyomkövetés módosítása (Transact-SQL)
Bemutatja, hogyan használható beépített függvények a mentett nyomkövetés megtekintésére. Mentett nyomkövetés megtekintése (Transact-SQL)
Bemutatja, hogyan használható a beépített függvények a nyomkövetési szűrő információinak megtekintésére. Szűrőadatok megtekintése (Transact-SQL)
Azt ismerteti, hogyan lehet tárolt eljárásokat használni a nyomkövetés törléséhez. Nyomkövetés törlése (Transact-SQL)
Azt ismerteti, hogyan minimalizálható a nyomkövetés által okozott teljesítményköltség. Az SQL Trace optimalizálása
Azt ismerteti, hogyan szűrhet egy nyomkövetést a nyomkövetés során felmerülő többletterhelés minimalizálása érdekében. Nyomkövetés szűrése
Ismerteti, hogyan minimalizálható a nyomkövetés által gyűjtött adatok mennyisége. Nyomkövetési fájl- és táblaméretek korlátozása
A Nyomkövetés ütemezésének két módja a Microsoft SQL Serveren. Ütemezze a nyomkövetéseket

Lásd még:

SQL Server profiler sablonok és jogosultságok
SQL Server Management Objects (SMO) programozási útmutató