Como rastrear conexões pelo DbMonitor e DbAccess

Hoje vou mostrar como rastrear conexões no DbMonitor e uma dica de como entender o log das operações.

  1. Encontre a pasta do DBAccess da sua instalação
  2. Dentro dessa pasta, abra o arquivo DbMonitor.exe

Encontrando o DbMonitor

  1. Abra o aplicativo, e insira o IP e a Porta de instalação do DbAccess

Inserindo o servidor e porta

  1. Agora abra o Protheus, abra a tela que você vai rastrear (por exemplo, eu vou rastrear o botão confirmar no cadastro de produtos)

Abrindo a tela, mas não prosseguindo com a confirmação

  1. Volte ao DbMonitor, vá na aba Usuários, e encontre essa conexão no cadastro de produtos

Encontrando a conexão no DbMonitor, aba de Usuários

  1. Clique no botão Rastrear no canto inferior direito

Utilizando o botão Rastrear

  1. Com essa tela aberta, clique no botão Limpar

Limpando o log que já vem por default

  1. Volte ao Protheus, no cadastro aberto, clique em Confirmar
  2. Agora volte ao Trace / Rastreiro que estava aberto, e note que terá inúmeras operações SQL. Clique no botão Salvar, e escolha um diretório para gravar esse log

Salvando o log

  1. Agora com o log salvo, você pode abrir ele com o Notepad++ por exemplo

O log funciona da seguinte maneira, primeiro vem a expressão SQL, por exemplo, SELECT, INSERT, UPDATE, etc… e Em seguida vem quais campos foram usados nessa expressão.

Então por exemplo, se uma expressão SQL tem 4 interrogações, abaixo dela terá os 4 parâmetros passados no lugar de cada interrogação.

Por exemplo, eu alterei apenas o campo de código de barras, então na linha que foi executado o update, foi passado três interrogações, uma no campo B1_CODBAR, uma no campo B1_USERLGA e uma filtrando o R_E_C_N_O_, notem que abaixo do update, tem os 3 conteúdos passados:

Nesse print temos um update na SB1, e notem nas setas e números coloridos, a posição das interrogações com os valores passados

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

4 Responses

  1. LUIZ disse:

    Muito bom. Parabéns! Obrigado pela gentileza de compartilhar conhecimento!

  2. Lucas L. disse:

    Bom dia! Tudo bem?

    Nos casos de DbSeek ele também mostra uma consulta SQL no banco? Por exemplo um DbSeek na SB1 ele mostra “SELECT B1_COD, etc…” no DbAccess?

    • Bom dia Lucas, tudo sim graças a Deus e você?

      Sim, ele mostra, por exemplo, esse comando em AdvPL:
      SB1->(MsSeek(FWxFilial(“SB1”) + “F0001”))

      Gera duas instruções no banco, a primeira um select para buscar o recno do registro. E a segunda para posicionar nesse registro, segue abaixo o log:
      SELECT TOP 40 R_E_C_N_O_, D_E_L_E_T_, B1_FILIAL, B1_COD FROM dbo.SB1990 WHERE B1_FILIAL = ? AND B1_COD >= ? AND D_E_L_E_T_ = ? ORDER BY B1_FILIAL,B1_COD,R_E_C_N_O_
      — Binded Parameters List —
      #1 [C] [ ]
      #2 [C] [F0001
      — Load [10] record(s) to IsamCache
      SELECT B1_AFAMAD,B1_FILIAL,B1_COD,TBL.D_E_L_E_T_ FROM dbo.SB1990 TBL WHERE TBL.R_E_C_N_O_ = ? — ( R = 8 )
      — Seek Table SB1990 Order 1 Expr [ F0001] Return 0 Recno 8 [FOUND]

      Um grande abraço.

Deixe uma resposta para LUIZCancelar resposta

Terminal de Informação