Sdílet prostřednictvím


Trasování SQL

platí pro:SQL Server

V nástroji SQL Trace se události shromažďují, pokud se jedná o instance tříd událostí uvedené v definici trasování. Tyto události je možné vyfiltrovat ze sledování nebo zařadit do fronty k jejich cíli. Cílem může být soubor nebo objekty SMO (SQL Server Management Objects), které můžou používat informace o trasování v aplikacích, které spravují SQL Server.

Důležité

Trasovací nástroje SQL a SQL Server Profiler jsou zastaralé. Microsoft.SqlServer.Management.Trace obor názvů, který obsahuje objekty trasování a přehrání serveru Microsoft SQL Server, je také zastaralý.

Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.

Místo toho použijte Rozšířené události. Další informace o rozšířených událostechnaleznete v Rychlý start: Rozšířené události v SQL Serveru a SSMS XEvent Profiler.

Výhody trasování SQL

Microsoft SQL Server poskytuje Transact-SQL systémem uložené procedury pro vytváření trasování v instanci databázového stroje SQL Server. Tyto systémové uložené procedury lze použít z vlastních aplikací k ručnímu vytváření trasování místo použití SQL Server Profileru. Díky tomu můžete psát vlastní aplikace specifické pro potřeby vašeho podniku.

Architektura trasování SQL

Zdroje událostí můžou být libovolným zdrojem, který vytváří událost trasování, například dávkové úlohy Transact-SQL nebo události SQL Serveru, jako je například zablokování. Další informace o událostech naleznete v SQL Server Event Class Reference. Jakmile dojde k události a když je třída události zahrnuta do definice sledování, shromažďují se informace o události sledováním. Pokud byly filtry definované pro třídu událostí v definici trasování, použijí se filtry a informace o události trasování se předají do fronty. Informace o trasování z fronty jsou buď zapisovány do souboru, nebo je může SMO používat v aplikacích, jako je SQL Server Profiler. Následující diagram znázorňuje, jak SQL Trace shromažďuje události během sledování.

Proces trasování událostí databázového stroje

Terminologie trasování SQL

Následující termíny popisují klíčové koncepty trasování SQL.

Event
Provedení akce v instanci databázového systému Microsoft SQL Server.

Datový sloupec
Atribut události.

Třída události
Typ události, kterou lze sledovat. Třída události obsahuje všechny datové sloupce, které mohou být hlášeny událostí.

Kategorie události
Skupina souvisejících tříd událostí.

Stopa (podstatné jméno)
Kolekce událostí a dat vrácených databázovým strojem.

Trasovat (sloveso)
Shromažďování a monitorování událostí v instanci SQL Serveru

Tracedefinition
Kolekce tříd událostí, datových sloupců a filtrů, které identifikují typy událostí, které se mají shromažďovat během trasování.

Filtr
Kritéria, která omezují události shromážděné v trasování.

Trasovací soubor
Soubor vytvořený při uložení trasování.

Template
Ve SQL Server Profiler se nachází soubor, který definuje třídy událostí a datové sloupce, jež se mají shromažďovat v trasování.

Tabulka trasování
V SQL Server Profileru se vytvoří tabulka, když se trasování uloží do tabulky.

Použití datových sloupců k popisu vrácených událostí

Sql Trace používá datové sloupce ve výstupu trasování k popisu událostí vrácených při spuštění trasování. Následující tabulka popisuje datové sloupce SQL Server Profiler, což jsou stejné datové sloupce jako sloupce používané trasováním SQL a označuje sloupce, které jsou ve výchozím nastavení vybrané.

Sloupec s daty Číslo sloupce Description
* Název aplikace 10 Název klientské aplikace, která vytvořila spojení s instancí SQL Serveru. Tento sloupec se naplní hodnotami předanými aplikací, nikoli názvem programu.
BigintData1 52 Hodnota (datový typ bigint ), která závisí na třídě události zadané v trasování.
BigintData2 53 Hodnota (datový typ bigint ), která závisí na třídě události zadané v trasování.
* Binární data 2 Binární hodnota závislá na třídě události zachycené v rámci trasování.
* ClientProcessID 9 ID přiřazené hostitelským počítačem procesu, ve kterém klientská aplikace běží. Tento datový sloupec se vyplní, pokud klient poskytne ID procesu klienta.
ColumnPermissions 44 Označuje, zda bylo povolení ke sloupci nastaveno. Text příkazu můžete analyzovat a určit, která oprávnění se použila na které sloupce.
* CPU 18 Doba procesoru (v milisekundách), kterou událost používá.
ID databáze 3 ID databáze určené příkazem USE database_name nebo ID výchozí databáze, pokud pro danou instanci nebyl vydán žádný příkaz USE database_name. SQL Server Profiler zobrazuje název databáze, pokud je sloupec dat ServerName zachycen v trace a server je dostupný. Pomocí funkce DB_ID určete hodnotu databáze.
DatabaseName 35 Název databáze, ve které je příkaz uživatele spuštěný.
DBUserName 40 Uživatelské jméno klienta SYSTÉMU SQL Server.
* Doba trvání 13 Doba trvání události (v mikrosekundách).

Server hlásí dobu trvání události v mikrosekundách (jeden miliontý nebo 10–6 sekundy) a dobu využití procesoru v milisekundách (jedna tisícovka nebo 10–3 sekundy). Grafické uživatelské rozhraní SQL Serveru Profiler zobrazuje sloupec Doba trvání ve výchozím nastavení v milisekundách, ale pokud je trasování uloženo v souboru nebo v tabulce databáze, hodnota sloupce Duration se zapisuje v mikrosekundách.
* EndTime 15 Čas ukončení události. Tento sloupec není vyplněný pro třídy událostí, které odkazují na událost, která se spouští, například SQL:BatchStarting nebo SP:Starting.
Error 31 Číslo chyby dané události. Často se jedná o číslo chyby uložené v sysmessages.
* EventClass 27 Typ třídy událostí, která je zachycena.
EventSequence 51 Pořadové číslo této události.
EventSubClass 21 Typ podtřídy události, která poskytuje další informace o jednotlivých třídách událostí. Například hodnoty podtřídy události pro událostní třídu Varování při spuštění představují typ varování při spuštění:

1 = Čekání dotazu. Dotaz musí před spuštěním počkat na prostředky; například paměť.

2 = Časový limit dotazu. Časový limit dotazu vypršel při čekání na spuštění požadovaných prostředků. Tento datový sloupec není vyplněný pro všechny třídy událostí.
GUID 54 Hodnota GUID, která závisí na třídě události zadané v trasování.
Jméno souboru 36 Logický název souboru, který je změněn.
Klika 33 Celé číslo používané rozhraním ODBC, OLE DB nebo DB-Library ke koordinaci provádění serveru.
Název hostitele 8 Název počítače, na kterém klient běží. Tento datový sloupec se vyplní, pokud klient zadá název hostitele. Pro určení názvu hostitele použijte funkci HOST_NAME.
IndexID dvacet čtyři ID indexu objektu ovlivněného událostí. Pro určení ID indexu objektu použijte sloupec indid v tabulce sysindexes system.
IntegerData 25 Celočíselná hodnota závislá na třídě události zaznamenané při sledování.
IntegerData2 55 Celočíselná hodnota závislá na třídě události zaznamenané při sledování.
IsSystem 60 Určuje, jestli došlo k události v systémovém procesu nebo uživatelském procesu:

1 = systém

0 = uživatel
Linenumber 5 Obsahuje číslo řádku, který obsahuje chybu. U událostí, které zahrnují Transact-SQL příkazy, jako SP:StmtStarting, LineNumber obsahuje číslo řádku příkazu v uložené proceduře nebo dávce.
LinkedServerName 45 Název propojeného serveru.
* Loginname 11 Název přihlášení uživatele (buď bezpečnostní přihlášení SQL Serveru, nebo přihlašovací údaje Windows ve formě DOMÉNA\Uživatelské jméno).
LoginSid 41 Identifikátor zabezpečení (SID) přihlášeného uživatele. Tyto informace najdete v zobrazení sys.server_principalshlavní databáze. Každé přihlášení k serveru má jedinečné ID.
MethodName 47 Název metody OLEDB.
Mode 32 Celé číslo používané různými událostmi k popisu stavu, který událost požaduje nebo přijala.
NestLevel 29 Celé číslo, které představuje data vrácená @@NESTLEVEL.
NTDomainName 7 Doména Systému Microsoft Windows, do které uživatel patří.
* NTUserName 6 Uživatelské jméno systému Windows.
ObjectID 22 ID objektu přiřazené systémem.
ObjectID2 56 ID souvisejícího objektu nebo entity, pokud je k dispozici.
Název objektu 34 Název objektu, na který se odkazuje.
** Objecttype 28 Hodnota představující typ objektu zapojeného do události. Tato hodnota odpovídá sloupci typu v objektech sysobjects.
Ofset 61 Počáteční posun příkazu v rámci uložené procedury nebo dávky.
OwnerID 58 Pouze pro události uzamčení. Typ objektu, který vlastní zámek.
MajitelJméno 37 Uživatelské jméno uživatele databáze vlastníka objektu.
ParentName 59 Název schématu, ve kterém se objekt nachází.
Permissions 19 Celočíselná hodnota, která představuje typ zaškrtnutých oprávnění. Hodnoty jsou:

1 = VYBRAT VŠE

2 = AKTUALIZOVAT VŠE

4 = ODKAZY VŠE

8 = INSERT

16 = DELETE

32 = EXECUTE (pouze procedury)

4096 = SELECT ANY (alespoň jeden sloupec)

8192 = AKTUALIZOVAT JAKÝKOLIV

16384 = ODKAZY
ProviderName 46 Název zprostředkovatele OLEDB.
* Čte 16 Počet čtecích operací na logickém disku provedených serverem jménem události. Mezi tyto operace čtení patří všechna čtení z tabulek a vyrovnávacích pamětí během provádění příkazu.
ID požadavku 49 ID požadavku, který obsahuje tento výkaz.
RoleName 38 Název role aplikace, která je povolená.
Počet řádků 48 Počet řádků v dávce
název serveru 26 Název instance SQL Server, která je sledována.
SessionLoginName 64 Přihlašovací jméno uživatele, který relaci inicioval. Pokud se například připojíte k SQL Serveru pomocí Login1 a spustíte příkaz jako Login2, SessionLoginName zobrazí Login1, zatímco LoginName zobrazí Login2. Tento datový sloupec zobrazuje přihlášení SQL Serveru i Windows.
Závažnost 20 Úroveň závažnosti události výjimky.
SourceDatabaseID 62 ID databáze, ve které existuje zdroj objektu.
* SPID 12 ID relace (SPID), který SQL Server přiřadil tomuto procesu přidruženému k klientovi.
SqlHandle 63 64bitový hash založený na textu ad hoc dotazu nebo na databázi a ID objektu SQL objektu. Tuto hodnotu lze předat sys.dm_exec_sql_text() pro načtení přidruženého textu SQL.
* Starttime 14 Čas, kdy akce začala, pokud byla dostupná.
State 30 Kód stavu chyby
Úspěch 23 Představuje, zda byla událost úspěšná. Mezi tyto hodnoty patří:

1 = úspěch.

0 = Selhání

Například 1 znamená úspěšnou kontrolu oprávnění a 0 znamená neúspěšnou kontrolu.
TargetLoginName 42 Pro akce, které cílí na přihlášení, název cílového přihlášení; Pokud například chcete přidat nové přihlášení.
TargetLoginSid 43 V případě akcí, které cílí na přihlášení, identifikátor SID cílového přihlášení; Pokud například chcete přidat nové přihlášení.
TargetUserName 39 Pro akce, které cílí na uživatele databáze, jméno tohoto uživatele; Pokud například chcete uživateli udělit oprávnění.
* Textdata 1 Textová hodnota závislá na třídě události, která je zachycena v trasovacím záznamu. Pokud však trasujete parametrizovaný dotaz, proměnné se ve sloupci TextData nezobrazí s datovými hodnotami.
ID transakce 4 Systémově přidělené ID transakce.
Type 57 Celočíselná hodnota závislá na třídě události zaznamenané při sledování.
* Píše 17 Počet operací zápisu fyzických disků, které server provádí jménem události.
XactSequence 50 Token pro popis aktuální transakce.

* Ve výchozím nastavení jsou tyto datové sloupce vyplněny pro všechny události.

** Další informace o datovém sloupci ObjectType naleznete v tématu ObjectType Trace Event Column.

Úlohy trasování SQL

Popis úkolu Téma
Popisuje, jak vytvářet a spouštět trasování pomocí Transact-SQL uložených procedur. Vytváření a spouštění trasování pomocí uložených procedur Transact-SQL
Popisuje, jak vytvořit ruční trasování pomocí uložených procedur v instanci databázového stroje SQL Serveru. Vytváření ručních trasování pomocí uložených procedur
Popisuje, jak uložit výsledky trasování do souboru, do kterého se zapisují výsledky trasování. Uložení výsledků trasování do souboru
Popisuje, jak zlepšit přístup k trasovacím datům pomocí místa v dočasném adresáři. Vylepšení přístupu k datům trasování
Popisuje, jak pomocí uložených procedur vytvořit trasování. Vytvoření trasování (Transact-SQL)
Popisuje, jak pomocí uložených procedur vytvořit filtr, který načte pouze informace potřebné ke trasování události. Nastavení filtru trasování (Transact-SQL)
Popisuje, jak pomocí uložených procedur upravit existující sled. Úprava existujícího trasování (Transact-SQL)
Popisuje, jak pomocí předdefinovaných funkcí zobrazit uložené trasování. Zobrazení uloženého trasování (Transact-SQL)
Popisuje, jak používat vestavěné funkce k zobrazení informací o filtru trasování. Zobrazení informací o filtru (Transact-SQL)
Popisuje, jak pomocí uložených procedur odstranit stopu. Odstranění trasování (Transact-SQL)
Popisuje, jak minimalizovat náklady na výkon vzniklé trasováním. Optimalizace trasování SQL
Popisuje, jak filtrovat trasování, aby se minimalizovaly režijní náklady, které vzniknou během trasování. Filtrovat trasu
Popisuje, jak minimalizovat množství dat, která trasování shromažďuje. Omezení velikosti trasovacích souborů a tabulek
Popisuje dva způsoby plánování trasování v Microsoft SQL Serveru. Plánování trasování

Viz také

Šablony a oprávnění SQL Server Profileru
průvodce programováním objektů SMO (SQL Server Management Objects)