Problema com ADO

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problema com ADO

Mensagem por JoséQuintas »

Fernando queiroz escreveu:se sair por timeout a próxima linha de comandos não será executada
É que a coisa não é o que parece.
Sair por timeout significa que o programa desistiu de esperar, mas não significa que encerrou o comando.
Lá no servidor, ele continua trabalhando no comando.
E com certeza isso é problema, significa que o comando tá demorado, e as tarefas vão se acumulando no servidor.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Problema com ADO

Mensagem por Fernando queiroz »

JoséQuintas escreveu:
É que a coisa não é o que parece.
Sair por timeout significa que o programa desistiu de esperar, mas não significa que encerrou o comando.
Lá no servidor, ele continua trabalhando no comando.
E com certeza isso é problema, significa que o comando tá demorado, e as tarefas vão se acumulando no servidor.
o pior é que ele continuou fazendo no servidor e não encerrou a rotina na estação, causando problemas pois continuou na tela em vez de fecha-la, já que para sair teria que fechar novamente causando uma repetição da rotina, caso serio esse
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problema com ADO

Mensagem por JoséQuintas »

Fernando queiroz escreveu:o pior é que ele continuou fazendo no servidor e não encerrou a rotina na estação, causando problemas pois continuou na tela em vez de fecha-la, já que para sair teria que fechar novamente causando uma repetição da rotina, caso serio esse
A execução de SQL NÃO pode ser demorada, salvo exceções.
Comandos usados o tempo todo, tem que ser rápidos.
Pra SQL, dá pra considerar que 2 segundos pode ser demorado, ou até uma eternidade.
Pelo jeito você está considerando que demorar é normal.

Tome como exemplo a pesquisa do google.
Quantos milhões de registros você imagina que o google use?
E o retorno é sempre rápido.
Não é o tamanho do banco de dados que vai definir se pode ou não demorar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Problema com ADO

Mensagem por alxsts »

Olá!
alxsts escreveu:O código abaixo mostra como aguardar a execução de um processo mais longo. Talvez te interesse:
Neste mesmo tópico, alguns posts atrás, mostrei como aguardar a execução de um comando SQL sendo executado pela conexão ADO. Talvez ajude...
[]´s
Alexandre Santos (AlxSts)
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Problema com ADO

Mensagem por Fernando queiroz »

alxsts escreveu:Olá!
alxsts escreveu:O código abaixo mostra como aguardar a execução de um processo mais longo. Talvez te interesse:
Neste mesmo tópico, alguns posts atrás, mostrei como aguardar a execução de um comando SQL sendo executado pela conexão ADO. Talvez ajude...
estou usando assim:

cnConnection:CursorLocation := 3
cnConnection:CommandTimeOut := 600 // seconds
cnConnection:ConnectionTimeOut := 600 // seconds

acho que não esta resolvendo, pois em determinados horários (11:30 as 15:00) dona internet não chega a 0.5Kb
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Problema com ADO

Mensagem por alxsts »

Olá!

Me refiro especificamente a este trecho:

Código: Selecionar todos

      oCn := win_OleCreateObject("ADODB.Connection")

      oCn:ConnectionString := cCnString
      oCn:CursorLocation := adUseClient
      oCn:Mode := adModeReadWrite

      oCn:open()
      
      oRs := oCn:Execute("spContador", ,adAsyncExecute)

      // The State property can have a combination of values. 
      // If a statement is executing, this property will have a 
      // combined value of adStateOpen and adStateExecuting.

      While oCn:State == adStateOpen + adStateExecuting   
         hb_idleSleep(3) 
      Enddo

      IF oRs != NIL .And. oRs:state = adStateOpen
         oTbr := TBrowse():new( 02, 3, MaxRow() - 3, MaxCol() - 3 )
...
Note que:
- o método execute da conexão é invocado de forma assíncrona (adAsyncExecute)
- o Do...While...Enddo: enquanto a execução não termina, aguarda 3 segundos.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problema com ADO

Mensagem por JoséQuintas »

Mas timeout de 600 segundos são 10 minutos.
10 minutos de espera é uma eternidade pra MySQL.
Se ultrapassa esse tempo limite... é porque a coisa está muito feia.
A internet estar a 0.5kb pode causar demora no retorno de informações, mas não na execução de comandos.
10 minutos de servidor é muito, vai estar afetando todos os usuários e até o próprio servidor.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Problema com ADO

Mensagem por Fernando queiroz »

JoséQuintas escreveu:Mas timeout de 600 segundos são 10 minutos.
10 minutos de espera é uma eternidade pra MySQL.
Se ultrapassa esse tempo limite... é porque a coisa está muito feia.
A internet estar a 0.5kb pode causar demora no retorno de informações, mas não na execução de comandos.
10 minutos de servidor é muito, vai estar afetando todos os usuários e até o próprio servidor.
ele executou no servidor bem rápido tanto que o usuario que estava na filial ligou avisando que ja estava no caixa a transação, mas na matriz a rotina ainda nao tinha encerrado fechando a tela, quando o app voltou a responder o comando de fechar a tela não foi executado, ficando dentro da rotina, causando o problema
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Responder