Página 1 de 2
dos error 64 rede windows server
Enviado: 06 Jul 2014 21:43
por JoséQuintas
À primeira vista, parece que são os terminais que ficam parados com o sistema aberto.
Pelo que vi, dos error 64 é "nome de rede excluído".
Numa das vezes que isso aconteceu, a pasta dos DBFs do servidor não dava pra ser acessada, levou vários segundos para voltar ao normal.
Alguém já passou por esse problema?
José M. C. Quintas
dos error 64 rede windows server
Enviado: 07 Jul 2014 16:37
por JoséQuintas
Esta alteração na errorsys vai ter o efeito que espero?
Aguardar 2 segundos e tentar novamente.
Código: Selecionar todos
IF e:OsCode == 64
wOpen( 10, 10, 20, 80, "Atenção" )
@ 15, 15 SAY "Servidor sumiu. Tentar novamente em 2 segundos"
Inkey(2)
wClose()
RETURN .T.
ENDIF
Nota:
Provavelmente seria configurar o timeout no servidor, mas quando não se tem acesso, o jeito é tentar alternativas.
Pelo menos o sistema vai ficar mostrando a janelinha pro usuário, que deve cobrar solução do responsável.
dos error 64 rede windows server
Enviado: 07 Jul 2014 17:24
por zazibr
ja verificou na configuração de hardware se esta habilitado para desligar se a maquina entrar em modo de economia de energia ?
dos error 64 rede windows server
Enviado: 07 Jul 2014 17:28
por Jairo Maia
Olá José,
Mil perdões, não tenho nada em mão para indicar agora, mas no próprio site da Microsoft, sei que tem muita informação sobre isso. E igualmente confusa, a medida que são situações diversas que podem provocar a perda da conexão. Sem substimar sua capacidade de pesquisa, sei que entre outras coisas você irá encontrar desde incompatibilidade de hardware, e até mesmo orientação a usar o ping antes de tentar se conectar...
PS: Se você estiver usando *SQL, sei que os servidores (não sei a partir de qual versão do OS, mas o servidor ignora configuração de economia de energia), mas uma das razões pode inclusive ser essa questão.
dos error 64 rede windows server
Enviado: 07 Jul 2014 17:47
por JoséQuintas
Se considerar o texto da Microsoft, o Harbour é velho.
"É possível que alguns programas mais antigos não salvem ou acessem dados com a unidade desconectada. Porém, eles funcionam normalmente antes da unidade ser desconectada. "
Aí diz que o limite de tempo é de 15 minutos pra desconectar o terminal automaticamente.
http://support.microsoft.com/kb/297684
A informação contida neste artigo aplica-se a:
Microsoft Windows Server 2003, Standard Edition (32-bit x86)
Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
Microsoft Windows 2000 Server
Microsoft Windows 2000 Professional Edition
Microsoft Windows Small Business Server 2003 Premium Edition
Microsoft Windows Small Business Server 2003 Standard Edition
Microsoft Windows XP Home Edition
Microsoft Windows XP Professional
Service Pack 3 para Windows XP
Microsoft Windows XP Professional x64 Edition
Microsoft Windows Server 2003, Enterprise x64 Edition
Windows Vista Enterprise 64-bit edition
Windows Vista Enterprise
Windows Vista Home Basic
Windows Server 2008 R2 Enterprise
Windows Server 2008 Enterprise
Windows 7 Enterprise
1. Precisa um tempo pra reconectar
2. Não sei se ao reconectar, a conexão antiga ainda vale, a que está aberta no Harbour
3. Aquela alteração que mencionei seria uma tentativa de contornar isto.
Ok. Tendo acesso ao servidor dá pra alterar isso, mas se não tiver... complica
dos error 64 rede windows server
Enviado: 08 Jul 2014 06:04
por Jairo Maia
Olá José,
JoséQuintas escreveu:Se considerar o texto da Microsoft, o Harbour é velho.
O Harbour não, mas aplicativos que precisam de mapeamento sim. Você ainda usa mapeamento com o Harbour?
dos error 64 rede windows server
Enviado: 08 Jul 2014 08:14
por JoséQuintas
Sim, continuo usando a pasta do servidor mapeada como uma letra.
Mas no problema em questão some letra, pasta e tudo, porque o terminal foi desconectado e precisa tempo pra reconectar.
Mesmo que algum arquivo esteja aberto.
dos error 64 rede windows server
Enviado: 08 Jul 2014 08:56
por Jairo Maia
Talvez então você possa desativar este recurso via linha de comando como indica o artigo, algo como:
Embora também possa ser feito via registro.
dos error 64 rede windows server
Enviado: 08 Jul 2014 09:08
por JoséQuintas
Não sei se a segurança do servidor vai deixar.
Tive uma idéia pra quebra galho: rodar uma rotina cada 5 minutos pra acessar a pasta, usando multithread.
Pelo menos vai manter a conexão ativa.
dos error 64 rede windows server
Enviado: 08 Jul 2014 12:28
por Kapiaba
Olá, Tive Problemas com windows 2003 server, e resolvi assim:
Código: Selecionar todos
// Pego novamente o diretorio onde estao os .DBFs
CHDIR(direxe)
SET DEFAULT TO
Não sei se é o seu caso, mas não custa tentar.
Obg. abs.
dos error 64 rede windows server
Enviado: 09 Jul 2014 06:25
por Jairo Maia
JoséQuintas escreveu:Tive uma idéia pra quebra galho: rodar uma rotina cada 5 minutos pra acessar a pasta, usando multithread.
Creio que resolva. Neste caso, pode ser assim também, só não sei se altera o consumo de CPU:
Código: Selecionar todos
nTempo := Seconds()+300
nTask := HB_BackGroundAdd( {|| If( Seconds() > nTempo, ChecaServ(), Nil ) } )
HB_IdleAdd( {|| HB_BackGroundRun( nTask ) } )
Function ChecaServ()
nTempo := Seconds()+300
/*
codigo
*/
Return
dos error 64 rede windows server
Enviado: 09 Jul 2014 10:22
por JoséQuintas
Eu criei esta classe pra esse tipo de coisa.
Repete a rotina a cada intervalo de tempo, enquanto o programa que chamou estiver sendo executado.
A rotina fica independente do programa, mas fechou o programa a rotina também fecha (com checagem a cada 1 segundo).
No caso de forçar fechamento, só alterar pra ::lExit := .T.
Nota:
É pra WVG. Apesar de não ter tela, é necessário criar o ambiente de trabalho com tela oculta.
AppInitSets() é minha função que inicializa meu ambiente de trabalho (pasta temporária, codepage, etc).
Código: Selecionar todos
oRun := RunWhileThreadClass():New()
oRun:nInterval := 300
oRun:bCode := { || Directory("*.*") }
hb_ThreadStart( { || oRun:Execute() } )
Código: Selecionar todos
CREATE CLASS RunWhileThreadClass
VAR lExit INIT .F.
VAR nThreadId
VAR nInterval INIT 600
VAR cWindowTitle INIT ""
VAR bCode
METHOD Init()
METHOD Execute( bCode )
END CLASS
METHOD Init() CLASS RunWhileThreadClass
::nThreadId := hb_ThreadSelf()
RETURN NIL
METHOD Execute( bCode ) CLASS RunWhileThreadClass
LOCAL nCont
hb_gtReload( "WVG" )
IF bCode != NIL
::bCode := bCode
ENDIF
AppInitSets()
HB_GtInfo( HB_GTI_WINTITLE, ::cWindowTitle )
wvgSetAppWindow():Hide()
DO WHILE .NOT. ::lExit
Eval( ::bCode )
FOR nCont = 1 TO ::nInterval
hb_ReleaseCPU()
IF hb_ThreadWait( ::nThreadId, 0.1, .T. ) == 1
::lExit := .T.
ENDIF
Inkey(1)
IF ::lExit
EXIT
ENDIF
NEXT
ENDDO
RETURN NIL
dos error 64 rede windows server
Enviado: 10 Jul 2014 11:49
por Jairo Maia
Ok! Eu estava curioso pra saber como você faria isso com MultiThread.
A única coisa que observei foi que se você acessa desta forma: oRun:bCode := { || Directory("*.*") }, não deveria ter o caminho da pasta do servidor para que o terminal acione a conexão?
dos error 64 rede windows server
Enviado: 10 Jul 2014 13:43
por JoséQuintas
Para o aplicativo, a pasta atual é a pasta dos arquivos.
dos error 64 rede windows server
Enviado: 12 Jul 2014 20:29
por JoséQuintas
Por enquanto nenhum erro novo.
E por enquanto usando a primeira opção.
Código: Selecionar todos
STATIC FUNCTION DefError( e )
LOCAL nCont, cMessage, aOptions, nChoice
// by default, division by zero yields zero
IF ( e:GenCode == EG_ZERODIV )
RETURN ( 0 )
ENDIF
// Adicionado em 06/07/2014 pra forçar não dar erro
IF e:OsCode == 64
wOpen( 10, 10, 20, 80, "Atenção" )
@ 15, 15 SAY "Servidor sumiu. Tentar novamente em 2 segundos"
Inkey(2)
wClose()
RETURN .T.
ENDIF