Problemas em rede
Moderador: Moderadores
-
Marcio Ereno
- Usuário Nível 1

- Mensagens: 15
- Registrado em: 12 Jul 2004 12:33
Problemas em rede
Ola Pessoal...
Estou com problema, quando 2 usuarios da rede tentam abrir o mesmo arquivo no mesmo instante aparece uma mensagem de arquivo conrrompido (DOS error 5). Uso sixnsx 2. Estou abrindo em modo Shared. Quando os terminais acessam o arquivos um de cada vez naum tenho problema, eles abrem na rede compartilhado certinho, o problema é quando acontece a coinsidencia de dois usuários tentarem abrir o mesmo arquivo ao mesmo tempo. Já fiz testes em laboratório e naum consigo descobrir o por quê. Alguem pode me ajudar ?
Estou com problema, quando 2 usuarios da rede tentam abrir o mesmo arquivo no mesmo instante aparece uma mensagem de arquivo conrrompido (DOS error 5). Uso sixnsx 2. Estou abrindo em modo Shared. Quando os terminais acessam o arquivos um de cada vez naum tenho problema, eles abrem na rede compartilhado certinho, o problema é quando acontece a coinsidencia de dois usuários tentarem abrir o mesmo arquivo ao mesmo tempo. Já fiz testes em laboratório e naum consigo descobrir o por quê. Alguem pode me ajudar ?
M. S. Ereno
Ola,
Acho que este problema esta ocorrendo na abertura do mesmo arquivo de indice. Verifique o seu codigo e veja se nao esta abrindo o mesmo indice para estes dois usuarios. Uma forma de evitar a abertura do mesmo indice é criar o nome do arquivo com uma combinação por exemplo:
Usuario+No.registro do usuario
Arq="usuario"+"01"
index on chave to &arq
Tente isto,
Abraço
Acho que este problema esta ocorrendo na abertura do mesmo arquivo de indice. Verifique o seu codigo e veja se nao esta abrindo o mesmo indice para estes dois usuarios. Uma forma de evitar a abertura do mesmo indice é criar o nome do arquivo com uma combinação por exemplo:
Usuario+No.registro do usuario
Arq="usuario"+"01"
index on chave to &arq
Tente isto,
Abraço
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Tambem padeço do mesmo mau !!! +o(
Meu sistema é desenvolvido em GASPRO e ele abre os mesmos indices para todos os usuarios e depois que passei a usar a SIX2 começou essas mensagens, mas não sabia que isso acontecia quando abria o mesmo arquivo ao mesmo tempo. Vou testar...
Mas o jeito certo não é compartilhar os dbfs e indices ? Se eu usar indices diferentes para cada maquina uma só vai enxergar o que a outra atualizou qdo reindexar, não é não ? Eu nunca houvi falar em a mesma tabela possuir indices diferentes. Isso nao vai corromper o indice ?
Meu sistema é desenvolvido em GASPRO e ele abre os mesmos indices para todos os usuarios e depois que passei a usar a SIX2 começou essas mensagens, mas não sabia que isso acontecia quando abria o mesmo arquivo ao mesmo tempo. Vou testar...
Mas o jeito certo não é compartilhar os dbfs e indices ? Se eu usar indices diferentes para cada maquina uma só vai enxergar o que a outra atualizou qdo reindexar, não é não ? Eu nunca houvi falar em a mesma tabela possuir indices diferentes. Isso nao vai corromper o indice ?
-
gransoft
- Usuário Nível 3

- Mensagens: 321
- Registrado em: 06 Jul 2004 17:48
- Localização: UBERLÂNDIA-MG
- Contato:
Six2
ARAGUARI-MG, 25 de agosto de 2004.
Prezados Amigos,
Migrar do NTX para CDX traz a principal vantagem da quantidade de arquivos abertos no "WIN-DOS", respeitando-se o limite do FILES=255.
Em qualquer situação, em Rede Local TODOS deverão abrir e compartilhar os mesmos *.DBF, *.NTX ou *.CDX, para que não haja corrupção de dados.
Não compreendo como o SIXx pode abrir um índice para cada usuário... Ao se incluir um registro, os demais índices (de cada usuário) seriam automaticamente atualizados ? Como ?
Atenciosamente,
Janis Peters Grants.
http://www.gransoft.com.br
gransoft@zipmail.com.br
Prezados Amigos,
Migrar do NTX para CDX traz a principal vantagem da quantidade de arquivos abertos no "WIN-DOS", respeitando-se o limite do FILES=255.
Em qualquer situação, em Rede Local TODOS deverão abrir e compartilhar os mesmos *.DBF, *.NTX ou *.CDX, para que não haja corrupção de dados.
Não compreendo como o SIXx pode abrir um índice para cada usuário... Ao se incluir um registro, os demais índices (de cada usuário) seriam automaticamente atualizados ? Como ?
Atenciosamente,
Janis Peters Grants.
http://www.gransoft.com.br
gransoft@zipmail.com.br
-
gransoft
- Usuário Nível 3

- Mensagens: 321
- Registrado em: 06 Jul 2004 17:48
- Localização: UBERLÂNDIA-MG
- Contato:
Six2
ARAGUARI-MG, 25 de agosto de 2004.
Prezados Amigos,
Migrar do NTX para CDX traz a principal vantagem da quantidade de arquivos abertos no "WIN-DOS", respeitando-se o limite do FILES=255.
Em qualquer situação, em Rede Local TODOS deverão abrir e compartilhar os mesmos *.DBF, *.NTX ou *.CDX, para que não haja corrupção de dados.
Não compreendo como o SIXx pode abrir um índice para cada usuário... Ao se incluir um registro, os demais índices (de cada usuário) seriam automaticamente atualizados ? Como ?
Atenciosamente,
Janis Peters Grants.
http://www.gransoft.com.br
gransoft@zipmail.com.br
Prezados Amigos,
Migrar do NTX para CDX traz a principal vantagem da quantidade de arquivos abertos no "WIN-DOS", respeitando-se o limite do FILES=255.
Em qualquer situação, em Rede Local TODOS deverão abrir e compartilhar os mesmos *.DBF, *.NTX ou *.CDX, para que não haja corrupção de dados.
Não compreendo como o SIXx pode abrir um índice para cada usuário... Ao se incluir um registro, os demais índices (de cada usuário) seriam automaticamente atualizados ? Como ?
Atenciosamente,
Janis Peters Grants.
http://www.gransoft.com.br
gransoft@zipmail.com.br
Caro colega.
Tambem utilizo os NSX, em rede, e não tenho problema algum, porém, segue abaixo a forma que utilizo na abertura dos arquivos.
Na primeira execuçao do sistema ele cria os DBF e os Indices conform segue:
USE SeuDBF
INDEX ON SeuCampo1 TAG SeuCampo1 TO SeuIndice
INDEX ON SeuCampo2 TAG SeuCampo2 TO SeuIndice
daqui em diante, utilizo um contador de DBFs para abrir os bancos um em cada area atraves do SELECT
SELE 1
USE SeuDBF SHARED NEW ALIAS SeuDBF
SET INDEX TO SeuArqIndice
Espero ter ajudado
Edson
Tambem utilizo os NSX, em rede, e não tenho problema algum, porém, segue abaixo a forma que utilizo na abertura dos arquivos.
Na primeira execuçao do sistema ele cria os DBF e os Indices conform segue:
USE SeuDBF
INDEX ON SeuCampo1 TAG SeuCampo1 TO SeuIndice
INDEX ON SeuCampo2 TAG SeuCampo2 TO SeuIndice
daqui em diante, utilizo um contador de DBFs para abrir os bancos um em cada area atraves do SELECT
SELE 1
USE SeuDBF SHARED NEW ALIAS SeuDBF
SET INDEX TO SeuArqIndice
Espero ter ajudado
Edson
-
gransoft
- Usuário Nível 3

- Mensagens: 321
- Registrado em: 06 Jul 2004 17:48
- Localização: UBERLÂNDIA-MG
- Contato:
ARAGUARI-MG, 24 de agosto de 2004.Edmo escreveu:SELECT 1
USE SeuDBF SHARED NEW ALIAS SeuDBF
SET INDEX TO SeuArqIndice
Prezado Edmo,
A cláusula NEW já determina automaticamente uma nova Área de Usuário, não sendo necessário o comando "SELECT n".
Atenciosamente,
Janis Peters Grants.
http://www.gransoft.com.br
gransoft@zipmail.com.br
Caro colega.
Eu não uso um indice para cada usuario... eu uso o mesmo indice para todos os usuarios.
Quando inicializo o sistema abro todos os DBFs com todos seus indices e depois cada um utiliza a função que deseja.
Nao sei bem o que acontece com você mas como é que você esta abrindo os DBFs ? e os indices ? qual indice você usa ?
Até +
edson
Eu não uso um indice para cada usuario... eu uso o mesmo indice para todos os usuarios.
Quando inicializo o sistema abro todos os DBFs com todos seus indices e depois cada um utiliza a função que deseja.
Nao sei bem o que acontece com você mas como é que você esta abrindo os DBFs ? e os indices ? qual indice você usa ?
Até +
edson
Nosso amigo tem razão. A six2 possui esse problema. Quem quiser testar basta fazer um programa que fique abrindo e fechando uma tabela e seus indices em loop e executa-lo ao mesmo tempo em duas maquinas. Qdo a abertura coincidir ocorrerá o erro DOS Nº5
Achei duas solucoes:
1 - Migrar para a Six3 porque esse bug nao acontece quando migramos para ela
2 - Usar o Trigger da SIX e colocar no evento Pre USe para o sistema criar um arquivo <Nome da Tabela>.FLG para servir como flag que a tabela esta sendo aberta e colocar no evento de abertura para destruir esse flag. Criar entao no Pre Use uma fila para só continuar a abertura depois que o arquivo for destruido. Talves seja necessario criar uma opcao de restart para o sistema, apagando os flags caso haja alguma travamento e flag nao seja destruido.
Preferi usar a primeira solucao... (Y)
Achei duas solucoes:
1 - Migrar para a Six3 porque esse bug nao acontece quando migramos para ela
2 - Usar o Trigger da SIX e colocar no evento Pre USe para o sistema criar um arquivo <Nome da Tabela>.FLG para servir como flag que a tabela esta sendo aberta e colocar no evento de abertura para destruir esse flag. Criar entao no Pre Use uma fila para só continuar a abertura depois que o arquivo for destruido. Talves seja necessario criar uma opcao de restart para o sistema, apagando os flags caso haja alguma travamento e flag nao seja destruido.
Preferi usar a primeira solucao... (Y)
-
MarioSeixas
- Usuário Nível 1

- Mensagens: 21
- Registrado em: 28 Ago 2004 13:12
- Localização: Na frente do Micro
- Contato:
Eu sei disso... Mas faça o teste e verá o erro da Six2. Abra a tabela em modo compartilhado, abra os indices com set index, coloque para abrir um dos indices com dbsetorder() e depois coloque um close all. Tudo isso dentro de um loop.
Funciona normalmente se voce colocar uma maquina apenas fazendo isso. Se colocar outra rodar o mesmo programa, qdo a abertura coincidir ira ocorrer o problema.
Só da erro com a Six2. Com NTX ou com a SIX3 nao dá.
Funciona normalmente se voce colocar uma maquina apenas fazendo isso. Se colocar outra rodar o mesmo programa, qdo a abertura coincidir ira ocorrer o problema.
Só da erro com a Six2. Com NTX ou com a SIX3 nao dá.
-
Jorge Adourian
- Usuário Nível 2

- Mensagens: 95
- Registrado em: 05 Jul 2004 23:38
- Localização: São Paulo-SP-Brasil
- Contato:
O Fenix está correto, isto realmente ocorre com o SIX2, eu apenas não cheguei a testar o SIX3 devido a outro BUG que ócorre nele quanto ao SEEK em loop, que no SIX2 não ocorre.
Fenix, se você puder teste o SX_AUTOSHARE(0), pois com ele eu resolvi este problema mesmo com o SIX2. Depois nos informe se deu certo !
Fenix, se você puder teste o SX_AUTOSHARE(0), pois com ele eu resolvi este problema mesmo com o SIX2. Depois nos informe se deu certo !
Até...
Jorge Adourian
Clipper5.2e, Blinker7.0, SIX2(NSX), ADS7.1, FW2.3c, PrintFile2.1.5 e PDFCreator0.8.0(2)
Jorge Adourian
Clipper5.2e, Blinker7.0, SIX2(NSX), ADS7.1, FW2.3c, PrintFile2.1.5 e PDFCreator0.8.0(2)
