it-swarm-eu.dev

Vyhledejte všechny nedávno provedené dotazy v databázi

[Jsem programátor T-SQL pro začátečníky]
[.. a doufám, že jsem na správném místě výměny zásobníku]

Chtěl bych získat seznam všech dotazů, které jsem provedl (přinejmenším těch, které jsem dnes provedl od rána). Musím podat zprávu o době provádění dotazů.

Online vyhledávání mi nepřineslo mnoho užitečných informací. Jediný dotaz, který jsem našel online a který vypadal docela blízko, je

SELECT
    deqs.last_execution_time AS [Time], 
    dest.TEXT AS [Query]
 FROM 
    sys.dm_exec_query_stats AS deqs
    CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY 
    deqs.last_execution_time DESC

Tento dotaz vrátil některé liché výsledky (většina z nich byla banda sprocs). Navíc všechny tyto výsledky ukazují dotazy provedené od dnešního odpoledne (potřebuji dotazy od rána).

V předchozích otázkách jsem nenašel nic (pokud již byla podobná otázka položena, upozorněte mě na to).

Viděl jsem nějaké návrhy týkající se SQL Profiler, ale myslím, že mi profiler pomůže, pouze pokud jsem již začal trasování (opravte mě, pokud se mýlím).

Může mi někdo navrhnout, jak mám postupovat, abych získal seznam všech dotazů, které byly od rána provedeny v databázi (včetně časů provedení dotazů) ..

[Bylo by užitečné (nikoli požadavek), pokud mohu také nějak získat uživatelské jméno uživatele, který provedl dotaz]

21

Tento dotaz vrátil některé liché výsledky (většina z nich byla banda sprocs). Kromě toho všechny tyto výsledky ukazují dotazy provedené od dnešního odpoledne (Potřebuji dotazy od rána).

Je to proto, že se díváte do mezipaměti procedur a plány, které byly použity pro ráno, by tam již nemusely žít (kvůli tlaku paměti, restartování serveru/instance, ručním vymazání proc cache atd.).

Skutečným způsobem, jak získat dotazy na instanci (nebo konkrétněji na databázi), by bylo vytvoření relace SQL Trace nebo Extended Events. Správně vytvořený, jeden z nich vám poskytne informace, které hledáte.

Pokud hledáte prováděcí statistiky dnes ráno a jen dnes ráno (tj. Nastavení výše uvedených implementací monitorování jako proaktivní úkol a úkol příště není dostatečné), pak, pokud to již nebylo vytvořeno, nebude žádná způsobem nativně k získání těchto informací.

Pro budoucí použití začněte sledováním SQL, které zachycuje událost SQL: StmtCompleted . V XE by to bylo sql_statement_completed událost.

Podle mého názoru bych místo pokračování ve vyhledávání zbytků statistik provádění dotazů začal trávit čas přemýšlením o tom, jak znovu provést pracovní vytížení, které se pokoušíte změřit. Ale tentokrát před tím, nastavte správné sledování/monitorování.

12
Thomas Stringer