Página 1 de 3
Problemas em rede
Enviado: 12 Jul 2004 12:50
por Marcio Ereno
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 ?
Enviado: 12 Jul 2004 16:15
por Marcelo
Poste um trecho da rotina em que vc abre os arquivos em modo compartilhado e a abertura dos indices também, para que possamos analisar mais afundo o problema.
Marcelo
Enviado: 13 Jul 2004 00:39
por ANDRIL
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
Enviado: 24 Ago 2004 21:45
por Fenix
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 ?
Six2
Enviado: 25 Ago 2004 09:21
por gransoft
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
Six2
Enviado: 25 Ago 2004 09:23
por gransoft
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
Enviado: 25 Ago 2004 09:40
por Edmo
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
Enviado: 25 Ago 2004 09:53
por gransoft
Edmo escreveu:SELECT 1
USE SeuDBF SHARED NEW ALIAS SeuDBF
SET INDEX TO SeuArqIndice
ARAGUARI-MG, 24 de agosto de 2004.
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
Enviado: 26 Ago 2004 11:34
por Fenix
O Andril responde aí cara...
Como voce usa um indice diferente para cada usuario sem corrompe-los ?
Enviado: 26 Ago 2004 16:16
por Edmo
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
Enviado: 28 Ago 2004 14:14
por Fenix
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)
Enviado: 28 Ago 2004 15:27
por MarioSeixas
Desculpe mas DOS erro 5 (Acces Denied) é erro de compartilhamento. Isso acontece em rede quando a unidade onde está o programa não esta compartilhada completamente e sim somente leitura.
Verifique como a unidade esta compartilhada no servidor.
Enviado: 28 Ago 2004 17:02
por Fenix
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á.
Enviado: 28 Ago 2004 17:10
por Jorge Adourian
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 !
Enviado: 28 Ago 2004 17:14
por Fenix
Posso testar, mas nao conheco essa rotina. O que tenho que fazer ?
E quanto a esse bug no seek em loop ? Do que se trata ?