Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
ADO.NET obsahuje integrovanou funkci trasování dat, která je podporována poskytovateli dat .NET pro SQL Server, Oracle, OLE DB a ODBC, stejně jako ADO.NET DataSet a síťovými protokoly SQL Serveru.
Trasování volání rozhraní API pro přístup k datům vám může pomoct s diagnostikou následujících problémů:
Neshoda schématu mezi klientským programem a databází
Problémy s nedostupností databáze nebo síťovými knihovnami
Nesprávný kód SQL bez ohledu na to, jestli je pevně zakódovaný nebo vygenerovaný aplikací.
Nesprávná programovací logika
Problémy vyplývající z interakce mezi několika komponentami ADO.NET nebo mezi ADO.NET a vlastními komponentami
Aby bylo možné podporovat různé technologie trasování, trasování je rozšiřitelné, takže vývojář může sledovat problém na jakékoli úrovni zásobníku aplikací. I když trasování není funkcí určenou pouze pro ADO.NET, poskytovatelé společnosti Microsoft využívají obecné rozhraní API pro trasování a instrumentaci.
Další informace o nastavení a konfiguraci spravovaného trasování v ADO.NET najdete v tématu Trasování přístupu k datům.
Přístup k diagnostickým informacím v protokolu rozšířených událostí
Ve zprostředkovateli dat rozhraní .NET Framework pro SQL Server bylo aktualizováno trasování přístupu k datům (Trasování přístupu k datům), aby bylo snazší korelovat události klienta s diagnostickými informacemi, jako jsou selhání připojení, z vyrovnávací paměti okruhu připojení serveru a informací o výkonu aplikace v protokolu rozšířených událostí. Informace o čtení protokolu rozšířených událostí naleznete v tématu Zobrazení dat relace událostí.
V případě operací připojení ADO.NET odešle ID připojení klienta. Pokud připojení selže, můžete získat přístup k vyrovnávací paměti okruhu připojení (Řešení problémů s připojením v SQL Serveru 2008 pomocí vyrovnávací paměti okruhu připojení) a najít pole ClientConnectionID, kde získáte diagnostické informace o selhání připojení. ID připojení klienta se protokolují do kruhové vyrovnávací paměti pouze v případě, že dojde k chybě. (Pokud se připojení nezdaří před odesláním paketu preloginu, ID připojení klienta se nevygeneruje.) ID připojení klienta je identifikátor GUID 16 bajtů. ID připojení klienta můžete také najít v cílovém výstupu rozšířených událostí, je-li akce client_connection_id přidána do událostí relace rozšířených událostí. Pokud potřebujete další pomoc s diagnostikou klientských ovladačů, můžete povolit trasování přístupu k datům a znovu spustit příkaz pro připojení a sledovat ClientConnectionID pole v trasování přístupu k datům.
ID připojení klienta můžete získat programově pomocí SqlConnection.ClientConnectionID vlastnosti.
Je ClientConnectionID k dispozici pro SqlConnection objekt, který úspěšně naváže připojení. Pokud pokus o připojení selže, ClientConnectionID může být k dispozici prostřednictvím SqlException.ToString.
ADO.NET také odešle ID aktivity specifické pro vlákno. ID aktivity se zaznamenává v relacích rozšířených událostí, pokud jsou relace spuštěny s povolenou možností TRACK_CAUSALITY. V případě problémů s výkonem aktivního připojení můžete id aktivity získat z trasování přístupu k datům klienta (ActivityID pole) a pak vyhledat ID aktivity ve výstupu rozšířených událostí. ID aktivity v rozšířených událostech je 16bajtový GUID (ne stejný jako GUID pro ID připojení klienta) připojený ke čtyřbajtovému pořadovému číslu. Pořadové číslo představuje pořadí požadavku v rámci vlákna a označuje relativní pořadí dávkových příkazů a příkazů RPC pro vlákno. Aktuálně se ActivityID volitelně odesílá pro dávkové příkazy SQL a požadavky RPC, když je zapnuté trasování přístupu k datům a 18. bit v konfiguračním slově trasování přístupu k datům je zapnutý.
Následuje ukázka, která používá Transact-SQL ke spuštění relace rozšířených událostí, která se uloží do vyrovnávací paměti okruhu, a zaznamená ID aktivity odeslané z klienta v operacích RPC a batch.
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)