Clipper On Line • Ver Tópico - Corrupcao dados DBF 1010/1012 (Clipper+Six)(Delphi+ApolloDB)

Corrupcao dados DBF 1010/1012 (Clipper+Six)(Delphi+ApolloDB)

Discussão sobre a linguagem CA-Clipper.

Moderador: Moderadores

 

Corrupcao dados DBF 1010/1012 (Clipper+Six)(Delphi+ApolloDB)

Mensagempor Itamar M. Lins Jr. » 11 Ago 2017 10:47

Ola!
Pelo que entendi, a solução deverá vir da empresa ApolloDb. Pois eles tem as duas pontas do problema. http://www.apollodb.com/sixrdd.asp
Já estão decididos a usar Delphi com ApolloDB e abandonar o xBase. É aguardar a solução pela empresa ApolloDb.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Corrupcao dados DBF 1010/1012 (Clipper+Six)(Delphi+ApolloDB)

Mensagempor Itamar M. Lins Jr. » 11 Ago 2017 10:54

Ola!
Fizemos adaptacoes no codigo Windows, e testamos em ambiente Client/Server TCP/IP como orientado.

Enquanto digitava a msg, já veio depois a sua com a solução.
Eles possuem um servidor TCP/IP para DBF e basta usar este recurso.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Corrupcao dados DBF 1010/1012 (Clipper+Six)(Delphi+ApolloDB)

Mensagempor profase » 11 Ago 2017 11:16

Olá novamente,

Quintas, tirando sua duvida:

O Apollo DataBase Sever custa apenas US$ 249 pra nos desenvolvedores.
E nao tem custo de distribuicao. Ilimitada.

Veja, do proprio fornecedor:(www.apollodb.com)
Unlimited Server
Supports an unlimited # of concurrent client connections
Full-featured database server
Ideal solution for multiple deployments (e.g. vertical market applications)
Royalty free distribution

Nao é nada pelo custo-beneficio....

Grato,
Paulo Ricardo Martinez...
profase
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 6
Data de registro: 07 Ago 2017 14:17
Cidade/Estado: São Paulo
Curtiu: 4 vezes
Mens.Curtidas: 1 vez

Corrupcao dados DBF 1010/1012 (Clipper+Six)(Delphi+ApolloDB)

Mensagempor Jairo Maia » 11 Ago 2017 12:19

Olá Paulo,

Desafio é sempre aprendizado, então na quarta feira (09/08) baixei seu arquivo, vi o vídeo. A rigor nem tinha ideia se poderia ajudar em algo, apenas decidi fazer os testes.

Fiz reiterados testes conforme informações do vídeo. Não consegui simular o erro. Então resolvi abrir duas instâncias de cada aplicativo, fiz novamente reiterados testes dos mais variados jeitos possíveis. Não vi o erro. Então antes de finalizar fechei tudo e segui seu vídeo passo-a-passo digitando até mesmo cada caractere como você fez nos mesmos registros. Fiz e refiz. Não vi o erro.

Usei Windows 7 32 Professional. Mas como você disse, o erro é intermitente... e acabei não pegando.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Corrupcao dados DBF 1010/1012 (Clipper+Six)(Delphi+ApolloDB)

Mensagempor 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.
profase
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 6
Data de registro: 07 Ago 2017 14:17
Cidade/Estado: São Paulo
Curtiu: 4 vezes
Mens.Curtidas: 1 vez

Corrupcao dados DBF 1010/1012 (Clipper+Six)(Delphi+ApolloDB)

Mensagempor JoséQuintas » 16 Ago 2017 11:28

Pelo que entendi, o problema é a codepage.

O DOS e Clipper usam por padrão a codepage USA (437), e o Windows usa a codepage PT_BR.
Isso afetaria o uso de caracteres acentuados.
É o mesmo problema que precisamos tomar cuidado no Harbour.

Clipper = default EUA, pode ser configurado por arquivo LIB
DOS = default EUA, pode ser configurado por... COUNTRY.SYS (já não tenho certeza)
Windows = default PT-BR

Mas no seu caso é pior, porque também afeta a criptografia, que pode fazer uso de toda tabela ASCII.

No Harbour, por exemplo, temos problema com DESCEND( Dtos( Date() ) ), porque a codificação é padrão EUA e fica diferente em PT_BR.
Só não dá corrupção de dados, porque a ordem está certa no ponto de vista de ASCII, e só o Harbour acessa.

Mas num resumo geral: a criptografia está sendo seu maior vilão, é o que está exigindo cuidados especiais, e até a LIB específica SIXCDX/SIXNSX.

Mas bom saber que resolveu.
Já nem passou pela cabeça que poderia ser codepage.
Talvez centralizado no servidor, o servidor esteja preparado pra tratar qualquer codepage de qualquer terminal e por isso resolva.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Anterior



Retornar para CA-Clipper

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 10 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro