Hoje vou mostrar como rastrear conexões no DbMonitor e uma dica de como entender o log das operações.
- Encontre a pasta do DBAccess da sua instalação
- Dentro dessa pasta, abra o arquivo DbMonitor.exe
- Abra o aplicativo, e insira o IP e a Porta de instalação do DbAccess
- Agora abra o Protheus, abra a tela que você vai rastrear (por exemplo, eu vou rastrear o botão confirmar no cadastro de produtos)
- Volte ao DbMonitor, vá na aba Usuários, e encontre essa conexão no cadastro de produtos
- Clique no botão Rastrear no canto inferior direito
- Com essa tela aberta, clique no botão Limpar
- Volte ao Protheus, no cadastro aberto, clique em Confirmar
- 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
- 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:
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Muito bom. Parabéns! Obrigado pela gentileza de compartilhar conhecimento!
Eu que agradeço pelo comentário Luiz.
Grande abraço.
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.