por profase » 16 Ago 2017 10:46
Bom dia a todos,
Antes de mais nada, queria agradecer do fundo do coração pela sua atençao focada no nosso problema.
Estamos desesperados mesmo. com um projeto que poderia ir por agua abaixo...
MAS ENCONTRAMOS A SOLUCAO:
Utilizaremos CLIENTE/SERVER TCP-IP.
Nosso sistema esta rodando a 2 dias, em campo, e nenhum problema de corrupção foi comunicado.
No suporte da APOLLODB, obtivemos o seguinte, traduzido pelo googletradutor:
Usando regras de classificação do DOS vs. regras de classificação do Windows:
Esta é a solução # 1 para corrigir problemas relacionados a Ãndices corrompidos ou dados correntes.
Apollo suporta regras de classificação do DOS e do Windows
DOS e Windows têm regras diferentes para classificar caracteres e, portanto, afetam a forma como o Apollo cria e mantém Ãndices. O problema mais comum que os novos usuários do Apollo experimentam é que eles, inconscientemente, abrem um arquivo DBF e um Ãndice que foi criado usando as regras de classificação do DOS e os dados não parecem ser ordenados corretamente. Na verdade, não é o caso. O que realmente está acontecendo é que o Apollo deve ser informado para usar as regras de classificação do DOS (também conhecido como Machine Collation) em vez das regras de classificação padrão do Windows, para gerenciar esses tipos de arquivos. Isso também é necessário se o seu aplicativo Apollo precisar ser executado simultaneamente com um aplicativo CA-Clipper que compartilha os mesmos arquivos de dados. Para usar as regras de classificação do DOS, você deve informar ao Apollo que use o agrupamento da máquina (ou seja, regras de classificação do DOS).
O problema de "dados corruptos" torna-se aparente quando parece que os dados em um DBF não estão sendo atualizados corretamente de seu aplicativo Apollo ou do aplicativo CA-Clipper. A questão é causada porque o Apollo, por padrão, está usando as regras de classificação do Windows para atualizar os Ãndices, quando ele deveria, de fato, estar usando regras de classificação do DOS. Esta configuração incorreta faz com que o Apollo corrompa os Ãndices, o que faz com que os dados aparecem fora de ordem, sejam inválidos ou simplesmente não apareçam. Se você estiver nessa situação, o remédio é configurar o Apollo para usar as regras de indexação DOS e reindex todos os Ãndices.
Instruções
Consulte os arquivos de ajuda do Apollo e procure "OEMCollation" e "order order". Basicamente, você deve fazer o seguinte:
Ligue para "SDEEngine.SetMachineCollation" no inÃcio do seu aplicativo Apollo ou antes de abrir qualquer arquivo DBF.
Especial para usuários do Delphi / C ++ Builder:
Adicione ApoEngInt à sua seção "usa" uma vez que a unidade ApoEngInt contém o objeto SDEEngine
Ligue para "SDEEngine.SetMachineCollation" no inÃcio do seu aplicativo Apollo ou antes de abrir qualquer arquivo DBF
Defina OEMTranslate = True para cada objeto de tabela.
Defina OptimisticBuffering = False para cada tabela.
Nota: Esta configuração False deve ser usada se a estrutura / esquema do DBF tiver sido alterado
========================================================================
Acesso compartilhado de dados de rede
Introdução ao Modo Servidor de Arquivo
Os aplicativos que usam o Apollo Embedded podem acessar dados em unidades de rede compartilhadas (por exemplo, F: \ MyDatabase.DBF) no modo de usuário único e simultaneamente enquanto outros usuários acessam o mesmo banco de dados. Este tipo de acesso a dados é muitas vezes referido como "modo de servidor de arquivos". O bloqueio de tabela e registro é gerenciado automaticamente pelas instruções Apollo para SQL e os desenvolvedores que usam a tecnologia DDA da Apollo podem gerenciar bloqueios de tabela e registro manualmente. De qualquer forma, os dados podem ser compartilhados simultaneamente entre vários usuários.
Em um cenário de rede compartilhada, cada estação de trabalho do Windows requer muitos recursos extras para gerenciar o compartilhamento do arquivo do banco de dados ou qualquer arquivo para esse assunto. Nesse caso, um aplicativo incorporado da Apollo não está no controle completo do banco de dados .DBF. De fato, cada aplicativo executado em cada estação de trabalho do Windows abre todo o banco de dados .DBF pela LAN, potencialmente causando grande quantidade de tráfego de rede.
Acesso exclusivo e compartilhado
O ponto chave para entender é o seguinte: O primeiro usuário que acessa o banco de dados .DBF na unidade compartilhada terá um desempenho muito bom em relação ao acesso local da área de trabalho. Sua estação de trabalho do Windows reconhece que ele é o único usuário desse arquivo e, portanto, o Windows é capaz de abrir o banco de dados .DBF em um tipo de modo exclusivo (as configurações do modo aberto do Apollo não afetam essa configuração do Windows. Isso é interno ao Windows trabalho.) . No entanto, no momento em que um segundo usuário acessa o mesmo banco de dados .DBF, o Windows descarta seu acesso ao arquivo de modo exclusivo para um acesso ao arquivo de modo compartilhado, que é uma magnitude mais lenta.
Problema
O ponto crucial do problema é que, mesmo após o segundo usuário fechar sua conexão com o banco de dados, e o primeiro usuário voltou a ser o único usuário que trabalha no banco de dados, a estação de trabalho do Windows dos primeiros usuários não retoma o acesso ao arquivo de modo exclusivo até o arquivo (Ou seja, banco de dados) é fechado e reaberto. Esta é a razão pela qual todos os aplicativos de desktop que executam esse tipo de "servidor de arquivos" sofrem de desempenho multiusuário e porque as aplicações de banco de dados, especialmente, sofrem corrupção de dados e vários outros problemas de bloqueio. Qualquer desenvolvedor Jet / Access de longa data irá reconhecer esse cenário.
Solução
A solução é simples. Para aplicativos multiusuários onde mais de um usuário precisa acessar um banco de dados simultaneamente quando outros acessam o mesmo banco de dados, uma configuração incorporada geralmente não será a melhor escolha. O Apollo Server ignora os problemas do arquivo de rede compartilhado do Windows, permitindo que as aplicações Apollo se conectem a bancos de dados usando o TCP / IP de alta velocidade. O Apollo Server é um aplicativo que é executado no computador que hospeda os dados e escuta em uma porta para aplicativos da Apollo para enviar ou solicitar dados via comandos SQL. Esta é uma verdadeira configuração cliente / servidor e é a melhor solução para o acesso a banco de dados multi-usuário. Além disso, os arquivos de banco de dados Apollo DBF nunca são transmitidos para cada estação de trabalho para processamento,
O Servidor Apollo oferece um desempenho superior que muitas vezes é magnitude mais rápido do que configurações embutidas semelhantes e elimina o excesso de tráfego de rede, garante um alto grau de integridade de dados e mantém os dados seguros.
================================================================================
Acho que isto poe um fim no assunto!
Muito agradecido pela atenção dos amigos, Quintas, Itamar e Jario.
Abraços,
Paulo Ricardo Martinez.