none
Monitoramento SQL RRS feed

  • Pergunta

  • Olá galera dei uma pesquisada aqui no fórum, mas infelizmente não achei algo que possa me ajudar!

    estou precisando de alguma query, para monitorar os comandos que estão sendo executados em determinada database

    como select, exec entre outros!

    desde já obrigado! :3

    sábado, 20 de março de 2021 01:15

Respostas

  • Karygalock1,

    Uma alternativa gráfica para realizar este procedimento seria através da ferramenta Activity Monitor existente dentro do Management Studio, o qual já implementa também uma conjunto de DMVs e DMFs que podem lhe ajudar a identificar diversos cenários.

    Veja se este link da documentação oficial Microsoft te ajuda:

    Abrir o Monitor de Atividade (SSMS) - SQL Server | Microsoft Docs

    Este outro link da documentação também é uma importante fonte de aprendizado:

    Monitoramento de desempenho e atividade de servidor - SQL Server | Microsoft Docs

    Em adicional, vou compartilhar alguns exemplos da documentação oficial da DMV: sys.dm_exec_query_stats

    Localizando as consultas TOP N

    O exemplo a seguir retorna informações sobre as cinco principais consultas classificadas pelo tempo médio de CPU. Este exemplo agrega as consultas de acordo com o hash de consulta para que as consultas logicamente equivalentes sejam agrupadas pelo respectivo consumo de recursos cumulativo.

    SELECT TOP 5 query_stats.query_hash AS "Query Hash",   
        SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count) AS "Avg CPU Time",  
        MIN(query_stats.statement_text) AS "Statement Text"  
    FROM   
        (SELECT QS.*,   
        SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1,  
        ((CASE statement_end_offset   
            WHEN -1 THEN DATALENGTH(ST.text)  
            ELSE QS.statement_end_offset END   
                - QS.statement_start_offset)/2) + 1) AS statement_text  
         FROM sys.dm_exec_query_stats AS QS  
         CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST) as query_stats  
    GROUP BY query_stats.query_hash  
    ORDER BY 2 DESC;

    Retornando agregações de contagem de linhas para uma consulta

    SELECT qs.execution_count,  
        SUBSTRING(qt.text,qs.statement_start_offset/2 +1,   
                     (CASE WHEN qs.statement_end_offset = -1   
                           THEN LEN(CONVERT(nvarchar(max), qt.text)) * 2   
                           ELSE qs.statement_end_offset end -  
                                qs.statement_start_offset  
                     )/2  
                 ) AS query_text,   
         qt.dbid, dbname= DB_NAME (qt.dbid), qt.objectid,   
         qs.total_rows, qs.last_rows, qs.min_rows, qs.max_rows  
    FROM sys.dm_exec_query_stats AS qs   
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt   
    WHERE qt.text like '%SELECT%'   
    ORDER BY qs.execution_count DESC;

    Veja estes outros links úteis:

    Funções e exibições de gerenciamento dinâmico relacionadas à execução (Transact-SQL)
    Transact-SQL de sys.dm_exec_sql_text
    Transact-SQL de sys.dm_exec_query_plan
    Transact-SQL de sys.dm_exec_procedure_stats
    Transact-SQL de sys.dm_exec_trigger_stats
    sys.dm_exec_cached_plans (Transact-SQL)


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta karygalock1 quarta-feira, 24 de março de 2021 11:45
    domingo, 21 de março de 2021 13:42