Problemas em rede

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Marcio Ereno
Usuário Nível 1
Usuário Nível 1
Mensagens: 15
Registrado em: 12 Jul 2004 12:33

Problemas em rede

Mensagem 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 ?
M. S. Ereno
Marcelo
Usuário Nível 1
Usuário Nível 1
Mensagens: 7
Registrado em: 15 Ago 2003 16:54
Localização: São Paulo

Mensagem 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
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Mensagem 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
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Fenix
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 14 Jul 2004 21:00

Mensagem 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 ?
gransoft
Usuário Nível 3
Usuário Nível 3
Mensagens: 321
Registrado em: 06 Jul 2004 17:48
Localização: UBERLÂNDIA-MG
Contato:

Six2

Mensagem 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
gransoft
Usuário Nível 3
Usuário Nível 3
Mensagens: 321
Registrado em: 06 Jul 2004 17:48
Localização: UBERLÂNDIA-MG
Contato:

Six2

Mensagem 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
Edmo
Usuário Nível 2
Usuário Nível 2
Mensagens: 67
Registrado em: 18 Ago 2003 17:41

Mensagem 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
gransoft
Usuário Nível 3
Usuário Nível 3
Mensagens: 321
Registrado em: 06 Jul 2004 17:48
Localização: UBERLÂNDIA-MG
Contato:

Mensagem 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
Fenix
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 14 Jul 2004 21:00

Mensagem por Fenix »

O Andril responde aí cara...

Como voce usa um indice diferente para cada usuario sem corrompe-los ?
Edmo
Usuário Nível 2
Usuário Nível 2
Mensagens: 67
Registrado em: 18 Ago 2003 17:41

Mensagem 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
Fenix
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 14 Jul 2004 21:00

Mensagem 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)
MarioSeixas
Usuário Nível 1
Usuário Nível 1
Mensagens: 21
Registrado em: 28 Ago 2004 13:12
Localização: Na frente do Micro
Contato:

Mensagem 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.
Fenix
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 14 Jul 2004 21:00

Mensagem 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á.
Jorge Adourian
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 05 Jul 2004 23:38
Localização: São Paulo-SP-Brasil
Contato:

Mensagem 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 !
Até...
Jorge Adourian
Clipper5.2e, Blinker7.0, SIX2(NSX), ADS7.1, FW2.3c, PrintFile2.1.5 e PDFCreator0.8.0(2)
Fenix
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 14 Jul 2004 21:00

Mensagem 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 ?
Responder