Se você ainda tem clientes no banco de dados DataFlex, POR QUÊ?
14 de Julho de 2020
Por Michel Mullan, Danes Bridge Enterprises
Desenvolvo com o DataFlex desde 1988, especializado em aplicações Windows de linhas de negócios para pequenas empresas. Ao longo dos anos, minha empresa, a Danes Bridge Enterprises , vem implantando constantemente novas aplicações e convertendo clientes com banco de dados DataFlex em back-ends SQL.
Recentemente, tive um último cliente usando o banco de dados embedded e manter o sistema legado foi uma grande dor!
Eles adoram sua antiga aplicação Character Mode, que não mudou muito desde 1990. Migrei a maioria das funções para a nova aplicação sofisticada do Windows (agora no DataFlex 2019), mas eles continuaram quebrando o banco de dados, sujando índices, matando programas no meio do processo etc., o que levaria tempo para ser resolvido. Eles também apresentavam, aleatoriamente, necessidades de relatórios para resumos, agregações, guias cruzadas que eram "possíveis" em relatórios regulares, mas alguns estavam apenas implorando pela facilidade de instruções SQL simples.
Eu encarei o desafio e absorvi o custo do tempo que levaria para esse upgrade e apenas cobrei-os pelas novas licenças. (Eu posso ouvi-lo pensando: "Você é realmente louco, Mullan", depois de tudo o que já foi feito...)
Deixe-me explicar o que realmente era necessário para abandonar o banco de dados embedded:
- Ter uma cópia do banco de dados embedded atual no meu laptop.
- Executar o Assistente de migração de banco de dados no DF19.0, selecionando todas as tabelas sem remover recnums. (Lembro-me de que há um código do character mode aqui que eu não vejo e que recompilei há mais de 10 anos. Além disso, algumas dessas etapas se aplicam apenas à aplicações com componentes de aplicações do character mode, conforme observado).
- Ops, falhou.
- Dados duplicados em um índice (o banco de dados MSSQL possui índices que não diferenciam maiúsculas de minúsculas).
- query.dat possui campos de sobreposição.
- Corrijir os dados duplicados na produção. Remover "query.dat" da lista de arquivos, pois eles não podem usar o DFQuery devido ao sistema operacional de 64 bits.
- Repetir as etapas 1 e 2. Sucesso!
- Instalar e registrar o Connectivity Kit para Character Mode (basicamente descompacte os arquivos na pasta df31d\bin e execute register.exe).
- Criar uma entrada DFCONNID em MSSQLDRV.INT, na pasta Bin do Character Mode.
- Adicionar um objeto cConnection ao programa do Windows.
- Configurar um arquivo DFINI.CFG na pasta de dados.
- Copiar o novo banco MSSQL e a pasta de dados no servidor de produção / estação de trabalho.
- Corrijir as regras do firewall para permitir a entrada e saída de MSSQL.
- Descubrir que os relatórios não funcionam ...
- Abrir todos os relatórios no DataFlex Reports, executar o Change DataSource Wizard em cada relatório e, enquanto você estiver no Check Database, também.
- Sobre o Crystal Reports. Decidir o que é mais fácil: substituir no DataFlex Reports ou executar o Assistente para alteração da fonte de dados. Aproveitar a oportunidade para substituí-los; restavam apenas dois e eram triviais.
Tarefa concluída!
Advertências:
- Overlaps nos índices podem te trazer problemas. Talvez. Eu não os uso, então ignorei.
- Índices sensíveis à maiúsculas e minúsculas. Experimente e veja. Você pode reconstruir o banco de dados sem agrupar com distinção entre maiúsculas e minúsculas, se precisar, ou apenas consertar os dados; provavelmente iniciei da forma errada. (Consulte https://chartio.com/learn/databases/how-to-find-duplicate-values-in-a-sql-table/).
- Comunicando. Basic Reports e RDS Reports ainda funcionarão. Você precisará mexer em todos os relatórios do Crystal ou DataFlex Reports, pelo menos um pouco.
- Firewall: você precisa consertar o Firewall do Windows para permitir que outros computadores vejam os dados.
Melhorias que você ganha:
- Facilidade de backups. (Recomendo consultar sqlbackupandftp.com para backups automáticos diários).
- Facilidade de novos relatórios. Você pode obter uma contagem de clientes com faturas por mais de 45 dias com uma linha de SQL.
- DbSuggestionForms agora trabalham melhor.
- Velocidade em multiusuário.
- Otimizando atualizações e relatórios em lote. Havia tantas varreduras de tabela no código antigo ...
Desvantagens:
Nenhuma.
Conclusão:
Quanto tempo foi gasto na migração? Um pouco menos de 3 horas. A maior parte foi gasta executando o Change Datasource Wizard 58 vezes. Depois, foi muito, muito maravilhoso, fazer uma alteração na tabela members no MSSQL Management Studio, iniciar o aplicação Character Mode e ver os dados lá, provando que a atualização funcionou.
Agora, tenho exatamente zero aplicações disponíveis no mercado que usam o banco de dados embedded. Como deveria ser