Jump to content
msoares

Retorna User, Query, tempo inicio e fim da execução da query

Recommended Posts

Pessoal, boa tarde.

 

Preciso da ajuda para compreender um select que estou fazendo.

 

A consulta é simples, porém estou iniciando na área de SQL a pouco tempo, eu quero trazer todas as consultar executadas no banco por determinado usuário, inicio da execução da consulta e tempo que ficou executando. Segue meu código abaixo, o problema é que ele retorna o usuário e query diferente de outro código que tenho.

 

Primeira query, (não consegui colocar os usuário):

SELECT
--US.HOSTNAME,
--US.NT_USERNAME,
--US.PROGRAM_NAME,
--US.sql_handle US,
DB_NAME(D.dbid) AS BANCO,
t.[text], 
s.last_execution_time,
CONVERT(VARCHAR(12), CONVERT(time, DATEADD(ms, S.TOTAL_WORKER_TIME / 1000000 * 1000, 0)),114) AS TEMPO_TOTAL_EXECUTANDO,
CONVERT(VARCHAR(12), CONVERT(time, DATEADD(ms, S.TOTAL_ELAPSED_TIME / 1000000 * 1000, 0)),114),
S.TOTAL_ROWS
FROM sys.dm_exec_cached_plans AS p
INNER JOIN sys.dm_exec_query_stats AS s
   ON p.plan_handle = s.plan_handle
CROSS APPLY sys.dm_exec_sql_text(p.plan_handle) AS t
CROSS APPLY sys.dm_exec_sql_text(S.sql_handle) AS D
--LEFT JOIN sys.sysprocesses US ON US.sql_handle = S.sql_handle
WHERE s.last_execution_time >= '2018-01-17 18:00:00.000' AND s.last_execution_time <= '2018-01-18'
ORDER BY s.last_execution_time

 

 

Segunda Query (Peguei na net e adicionei o que eu precisava, porém as querys e user estão diferentes).

 

SELECT
--sp.host_name AS HOST_USER,
--sp.login_name AS NOME_USUARIO,
T.[text] AS QUERY, 
S.last_execution_time AS INICIO_EXECUCAO,
CONVERT(VARCHAR(12), CONVERT(time, DATEADD(ms, S.TOTAL_WORKER_TIME / 1000000 * 1000, 0)),114) AS TEMPO_TOTAL_EXECUTANDO,
CONVERT(VARCHAR(12), CONVERT(time, DATEADD(ms, S.TOTAL_ELAPSED_TIME / 1000000 * 1000, 0)),114) AS TOTAL_ELAPSED,
S.TOTAL_ROWS
FROM sys.dm_exec_requests ER 
INNER JOIN 
   sys.dm_exec_sessions SP ON er.session_id = sp.session_id
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle) as T
CROSS APPLY sys.dm_exec_query_stats AS S
--CROSS APPLY sys.dm_exec_query_plan(er.plan_handle) p
--CROSS APPLY sys.dm_exec_text_query_plan(s.plan_handle, s.statement_start_offset, s.statement_end_offset) as qp
--where sp.session_Id NOT IN (@@SPID)
WHERE s.last_execution_time >= '2018-01-17 18:00:00.000' AND s.last_execution_time <= '2018-01-18'
AND T.[text] <> 'sp_server_diagnostics'
ORDER BY S.last_execution_time


 

 

Valew galera.

 

Share this post


Link to post
Share on other sites

Minha sugestão é que você dê uma olhada na documentação da versão que você utiliza,  e olhe os retornos das DMVs que você deseja utilizar, acho que vai ficar mais simples na hora de fazer a query.

 

Pelo que entendi ou está faltando alguma DMV na query ou está faltando algum campo nos relacionamentos, por isso recomendo que você avalie cada uma delas ( sys.dm_exec_requests, sys.dm_exec_sessions,  sys.dm_exec_sql_text  e  sys.dm_exec_query_stats) na documentação que está disponível no endereço: https://docs.microsoft.com/pt-br/sql/relational-databases/system-dynamic-management-views/execution-related-dynamic-management-views-and-functions-transact-sql?view=sql-server-2017

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By biakelly
      Olá Tudo bem?
       
      Poderiam me ajudar com a seguinte condição:
      <?php if ($row['facebook'] != "") { echo '<a class="btn btn-dark btn-social mx-2" href="<?php echo $row['facebook']; ?>"><i class="fab fa-facebook-f"></i></a>'; } else { echo ''; } ?>  
      Estou recebendo o seguinte erro:
      Parse error: syntax error, unexpected 'facebook' (T_STRING), expecting ';' or ',' in C:\xampp\htdocs\biazinha\inicial.php on line 371
       
       
      A linha 371 é essa:
      echo '<a class="btn btn-dark btn-social mx-2" href="<?php echo $row['facebook']; ?>"><i class="fab fa-facebook-f"></i></a>';  
       
       
    • By andreluis78
      Olá a todos.
      Criei um procedimento para verificar se um usuário está cadastrado no banco de dados.
      Utilizo Firebird como BD e componentes Zeos para acessar o banco.
      Resolvi criar uma query em tempo de execução para fazer a verificação. Não dá nenhum erro, porém, quando digito o nome do usuário no Edit e clico
      no botão que executa o procedimento, ele dá ''usuário inexistente'', mesmo se o nome do usuário estiver cadastrado no banco.
       
      Segue o código:
       
      procedure Tfrm_login.SpeedButton1Click(Sender: TObject); var Qry : TZQuery; begin   Qry:=TZQuery.Create(nil);   Qry.Connection := dm_dados.ZConnection1;  //componente de conexão   Qry.SQL.Add('select codigo, nome, acessar, user, pass from clientes');   Qry.Open;   if Qry.Locate('USER',Edit1.Text,[]) then   begin     ShowMessage('usuário cadastrado');   end   else   begin     ShowMessage('usuário inexistente');     Edit1.SetFocus;   end;   FreeAndNil(Qry); end;  
      Se alguém puder ajudar agradeço desde já.
      Obrigado
    • By diegosrg
      Olá pessoal!
      Preciso de um help por favor.
      Seguinte, tenho uma base de dados abaixo e preciso incluir uma coluna com os valores acumulado do mês independente do produto.Base atual:
      YEARMONTH / PRODUTO/ VALOR 202001 /ABC / 123,00 202001 /DEF / 234,00 202002 /ABC / 289,00 202002 /GHU / 222,00  
      Com a nova coluna ficaria assim:
      YEARMONTH / PRODUTO/ VALOR / VALOR ACUMULADO 202001 /ABC / 123,00 / 357,00 202001 /DEF / 234,00 / 357,00 202002 /ABC / 289,00 / 511 202002 /GHU / 222,00 / 511  
      Alguém tem alguma dica?!
      Desde já agradeço
    • By FabianoSouza
      Pessoal, por que essa query com COLLATE  não funciona?
      declare @strPesquisa varchar(30) SET @strPesquisa = 'naicle' SET @sql = 'SELECT ' SET @sql = @sql + 'ML.nome ' SET @sql = @sql + 'FROM ' SET @sql = @sql + 'dbo.minhaTab AS ML ' SET @sql = @sql + ' WHERE ' SET @sql = @sql + ' nome LIKE ' SET @sql = @sql + '''%' + @strPesquisa COLLATE Latin1_General_CI_AI + '%''' EXEC (@sql) Não acusa erro ao rodar.
      Mas não traz os registro porque está gravado como "naiclê" (com acento), o que significa que não está aplicando a COLLATE.
       
      Montando essa mesma query mas da forma tradicional, o COLLATE funciona.
       
      SELECT ML.nome FROM dbo.minhaTab AS ML WHERE nome LIKE '%'+ @strPesquisa COLLATE Latin1_General_CI_AI+'%'  
       
    • By FabianoSouza
      Pessoal, por que isso não funciona no SQL?
      SET @sql = 'SELECT ' SET @sql = @sql + @status + ' = meuCampo FROM minhaTab' EXEC(@sql) SELECT @status Preciso passar o resultado para a variável @status.
      Como faço??
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.