Database Server LetoDBf no Windows

Categoria: 

TUTORIAL DE INSTALAÇÃO LETODBf COMO SERVIÇO DO WINDOWS

Aqui aprenderemos desde a compilação à linkeedição e uso do LetoDb que é uma alternativa disponível gratuita para o famoso Advantage Database Server, vulgo ADS, por sua velocidade e consistência dos arquivos com índices que nunca davam problema.

Esse tutorial é um trabalho original desenvolvido por Josivan Nascimento em conjunto com Anderson Cardoso.

A retrocompatibilidade do LetoDB com o xHARBOUR foi conseguida por Rolf Beckmann conhecido no Github por Elchs.

LetoDB foi desenvolvido pelo russo Alexander Kresin.

LetoDBf é um fork (versão melhorada) do LetoDB criado por Rolf Beckmann e disponibilizado no Github.

                          __         __        ____  ____  __
                         / /   ___  / /_____  / __ \/ __ )/ _|
                        / /   / _ \/ __/ __ \/ / / / __  | |_
                       / /___/  __/ /_/ /_/ / /_/ / /_/ /|  _|
                      /_____/\___/\__/\____/_____/_____/ |_|

Tendo dito, vamos lá!

1º BAIXANDO O LETODBf

O que vamos solicitar ao programador é baixar  codigo aberto do letodbf. Neste exemplo vamos usar o fork do Elchs que é o completo, baixe a última versão pelo link do GitHub abaixo:

2º COMPILANDO O SERVIDOR LETODBf

Após isso descompacte na raiz do seu PC. Renomeie de letodbf-master para letodbf.

Dentro da pasta você verá  3 arquivos que um você tem que compilar pra gerar a sua lib, já os demais tem duas versões:

  • letodb.hbp
  • letodbsvc.hbp

LETODBf server

O letodb.hbp é o servidor leto que vc pode por no menu iniciar do windows, porém se vc tiver tela de logon só vai startar o leto após o cliente logar.

LETODBf service

O letodbsvc.hbp ele starta como serviço do windows não havendo necessidade de logar  -acho muito melhor- com seu ambiente de compilação devidamente configurado e as variáveis de ambiente.

Para compilar digite:  hbmk2 letodbsvc.hbp

O procedimento acima vai gerar o servidor letodb.

3º COMPILAÇÃO DAS LIBs DO LETODBF

São as LIBs que você deverá linkar no seu sistema.

Compilando as LIBs do LETODBF para HARBOUR

Digite:  hbmk2 rddleto.hbp  // tudo corretamente criará a rddleto, a biblioteca .lib no xHarbour e .a no Mingw ou Harbour.

Se der problema na compilação, baixe a versão mais nova do HB32 e tente novamente.

Compilando as LIBs do LETODBF para xHARBOUR

Restaurada a compatibilidade com o xHarbour!

elchs 2023-05-23 06:00 UTC+0100 Rolf 'elch' Beckmann

Basta compilar com make_b32 all

Daí procure suas libs na respectiva pasta. Na verdade você vai precisar linkar apenas a RDDLETO.LIB e...

Deu erro ainda, né? É porque o Elch precisou separar 2 LIBs do Windows a Ws2_32.lib e a Iphlpapi.lib, então se você compilar só com a RDDLETO vai dar 2 erros de funções que não existem. Entretanto, estas LIBs estão na pasta do BCC58/LIB/PSDK.

Calma que vou te ensinar a colocar tudo no lugar!

Atualizando as configurações do BCC58

Você vai precisar mexer naqueles 3 arquivos que ficam na pasta BCC58\BIN: BCC32.CFG, ILINK.CFG e TLINK32.CFG para incluir aquele caminho da PSDK onde estão as libs do Windows necessárias:

BCC32.CFG

-I"C:\bcc58\include;C:\bcc58\include\dinkumware"
-L"C:\bcc58\lib;C:\BCC58\lib\psdk"

ILINK32.CFG

-L"C:\bcc58\lib;C:\BCC58\lib\psdk"

TLINK32.CFG

/LC:\BCC58\lib;C:\BCC58\lib\psdk

Inserindo as LIBs do Windows com o HBMAKE

Por fim, você precisa incluir as tais libs WS2_32.LIB e IPHLPAPI.LIB separadas por espaço em branco na variável USERLIBS com o HBMAKE desta forma:

Agora sim! Tudo pronto!

 

4º INSTALANDO O LETODBf SERVICE

Antes de instalar o Letodbf como serviço do Windows é necessário configurar o Firewall para liberar a porta 2812.

1º PASSO: Configurando o Firewall do Windows para o LetoDBf

Vamos criar regras de entrada do Firewall no Windows para que o serviço possa funcionar no Protocolo TCP, porta 2812, aplicada a Domínio, Particular e Público.

Firewall do Windows

No Windows 10 você irá em:

Painel de Controle\Todos os Itens do Painel de Controle\Windows Defender Firewall

Depois clique no menu do lado esquerdo "Configurações avançadas".

 

Nova regra do Firewall do Windows

No Windows 10 você irá em:

Regras de Entrada > Nova Regra

Daqui pra frente é tudo igual

Selecionar protocolo e porta

Coloque aí a porta 2812 e clique em Avançar.

Depois selecione "Permitir a conexão" e clique em Avançar.

Em seguida aplique as regras ao Domínio, Particular e Público como na foto abaixo:

Aplicação de regra de Firewall

Em seguida, crie um nome para esta regra: Letodbf

Clique em Concluir!

PRIMEIRO PASSO CONCLUÍDO COM SUCESSO!

2º PASSO: Instalando o LetoDBf como serviço do Windows

Abra o MS-DOS como administrador do sistema.

Entre na pasta onde está o arquivo e chame-o passando o parâmetro "install".

Digite: letodb install

Após a instalação não pode renomear, mover nem excluir a pasta e/ou os arquivos.

Recomendo copiar os arquivos para o diretório C:\WINDOWS\SYSTEM32 ou C:\WINDOWS\SYSTEM64 justamente para ninguém mexer.

Tem que compilar para 32 bits ou 64 bits. Se tentar instalar no Windows 64 bits compilado em 32 bits não funciona.

Depois disso pode-se observar o serviço em execução:

Letodbf_service

É aí que mostra o serviço do Windows instalado e se ele está parado ou executando.

Daí você inicia o serviço ou dá um  net start LetoDBf_Service  pelo prompt do DOS para iniciar o serviço, enquanto que, para parar o serviço dê um  net stop LetoDBf_Service .

Agora vejamos a configuração do letodb.ini:

;Server = 192.168.2.47
;IP = 192.168.2.47
Port = 2812
DataPath = C:/DADOS/
;LogPath = /tmp
Default_Driver = CDX
;Lock_Scheme = 6
Memo_Type = FPT
Share_Tables = 1
No_Save_WA = 1
Lower_Path = 0
EnableFileFunc = 1
EnableAnyExt = 1
Allow_UDF = 1
Pass_for_Login = 0
Pass_for_Manage = 0
Pass_for_Data = 0
Pass_File = leto_users
Cache_Records = 21
;Max_Vars_Number = 1000
;Max_Var_Size = 67108864
;Tables_Max  = 999
;Users_Max = 99
Debug = 1
Optimize = 1
;AutOrder = 0
;ForceOpt = 0
;TimeOut = 360
;Zombie_Check = 0
;Server_User = advantage
;Server_UID = 1000
;Server_GID = 4
;BC_Services = letodb;
;BC_Interface = eth2
;BC_Port = 2812
;SMB_SERVER = 1
DataBase =C:/DADOS/ 
Backup = /tmp/backup
Mask = *.dbf,*.fpt,*.cdx
Lock = 1
Seconds = 30
Wait = 1
ArcCmd = tar -cvzf /tmp/backup/leto.tar.gz /tmp/backup/*

Observe as linhas sensíveis destacadas. É basicamente o que você deve ou pode mudar, ou seja, o diretório de instalação dos bancos de dados e o RDD sendo CDX ou NTX. O CDX é mais rápido e melhor, enquanto que, o NTX é o nativo.

Se não for especificado um endereço IP então será adotado o localhost que é 127.0.0.1.

TESTANDO A CONEXÃO ENTRE O APLICATIVO E O SERVIDOR

Na pasta utils\manager temos alguns utilitários. Para testar a conexão você pode executar o utilitário CONSOLE <endereço IP> em modo console ou o MANAGE em modo Windows compilado com a lib gráfica HWGUI.

CONSOLE

No caso do localhost, chame CONSOLE 127.0.0.1.

CONSOLE 127.0.0.1

A imagem acima ilustra um programa chamado letotest.exe que está com um banco de dados chamado CADASTRO.DBF aberto. Tagname são os nomes dos índices e Key as chaves de classificação.

Podemos perceber que está funcionando. Esse teste foi feito com as LIBs para xHarbour que o Elchs conseguiu recuperar a compatibilidade e estão disponíveis para download abaixo a versão compilada com xHarbour 1.2.3 com BCC5.8 que também está disponível para download.

MANAGE

manage.exe

O manage já é um aplicativo Windows. Basta clicar em "GO" para conectar, vai pedir usuário e senha, caso não tenha colocado senha no arquivo .ini então é só clicar em OK.

LETODBF x SET DEFAULT TO

Se você usa SET DEFAULT TO então pode dar problema no teu sistema. Isso porque o DATAPATH que está no LETODB.INI já faz justamente esse trabalho, portanto vai dar conflito.

Sugestão: Crie um "User Define" __LETODBF na compilação para fazer as adaptações necessárias se você estiver usando o LETODBF. Daí você só usa o SET DEFAULT se não estiver usando o LETODBF, assim:

#IFNDEF __LETODBF
	SET DEFAULT TO (xPATH)
#ENDIF

 

PARTE FINAL: USANDO O LETODBF NO SEU SISTEMA

O exemplo abaixo considera que você criou o user define __LETODBF

#include "inkey.ch"
#INCLUDE "GETEXIT.CH"
#INCLUDE "SET.CH"
#INCLUDE "COMMON.CH"

*****************************************************	
*** DEFINIR TIPO DE BANCO DE DADOS PADRÃO: DBFCDX ***
*****************************************************
ANNOUNCE RDDSYS
REQUEST DBFCDX
ANNOUNCE FPTCDX
REQUEST DBFFPT
Request ordfor
**********************************
*** CODEPAGE E CHARSET
**********************************
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850 // PARA INDEXAR CAMPOS ACENTUADOS
**********************************
*** SERVIDOR DE BANCO DE DADOS ***
**********************************
#IFDEF __LETODBF
	// servidor LETODBF
	#include "rddleto.ch"  // defines do RDD
	#include "dbinfo.ch"   // Header file for the RDD API Index OrderInfo and DBInfo support
	#include "leto_std.ch" // traduz os comandos para o LETO
	#include "letofile.ch" // traduz as funções para o LETO	
	REQUEST LETO
	REQUEST RDDLETO
	REQUEST RDDInfo
#ENDIF	

***************************************************
***************************************************
Function Main()
***************************************************
***************************************************
PUBLIC nDBFPORT:=2812, nHotbuf := 100, nTimeOut := 6000

***************************************************
*** CONFIGURAÇÃO DO BANCO DE DADOS PADRÃO *********
***************************************************
RDDSETDEFAULT("DBFCDX")
RDDREGISTER( "DBFCDX", 1 ) // RDT_FULL
SET AUTOPEN OFF
SET OPTIMIZE ON
SET HARDCOMMIT OFF // É MELHOR DAR UM DBCOMMIT() NO FINAL DE CADA TAREFA
SET DELETED ON
#IFDEF __LETODBF
	RDDSETDEFAULT( "LETO" )	
#ENDIF
***************************************************
*** IDIOMA PORTUGUÊS, CHARSET 850 *****************
***************************************************
HB_LangSelect("PT")
HB_SetCodePage("PT850")  // PARA INDEXAR CAMPOS ACENTUADOS
SET(_SET_LANGUAGE, "PT") // XHB 100 

********************************
* CONFIGURAÇÃO DO AMBIENTE: SETs
********************************
SET(_SET_MESSAGE, 23)     // _SET_MESSAGE 36
SET(_SET_MCENTER, .F.)    // _SET_MCENTER 37
Set(_SET_VIDEOMODE ,159)  // mouse no xharbour 40
SETMODE(43,80)
SETMOUSE(.t.)
SETBLINK(.T.)   // PISCA A COR SE TIVER * NA COR DE FUNDO
SET SCOREBOARD OFF
SET DATE BRITISH
SET EPOCH TO YEAR(DATE())-50
SET MESSAGE TO 24
SET TIME FORMAT TO "hh:mm"
SET CONFIRM ON
SET WRAP ON
SETCANCEL(.F.)         // IMPEDE ALT+C OU CONTROL+BREAK
WMODE(.F.,.F.,.F.,.F.) // Determines on which side windows are allowed to be moved off the screen. 
aCOLOR := {"N+/N", "W/N", "W+/N"}
SET CURSOR OFF
********************************
CLS

#IFDEF __LETODBF
	** LETODBF
	**********
	xPath := "//127.0.0.1:2812/" // ENDEREÇO IP DO LETO, LOCALHOST PADRÃO.
	cDBFUSER := ""
	cDBFPASS := ""
	// FAZ CONEXÃO
	IF leto_Connect( xPath, cDBFUSER, cDBFPASS, nTimeOut, nHotBuf) == -1
		ALERT("Nenhum LetoDBF Server encontrado - Erro: " + leto_Connect_Err( .T. ) )
		QUIT
	ELSE
		// LetoDBf Server 3.00
		// ===================
		cLETO := LETO_GetServerVersion()
		? cLETO
		? REPLICATE("=", LEN(cLETO))

		LETO_DBDRIVER( "DBFCDX", "FPT", 512 )

		? "DBF DATABASE DRIVER:", LETO_DBDRIVER()[ 1 ], "MEMOTYPE:", LETO_DBDRIVER()[ 2 ]
		? "RDD:", ALLTRIM(RddSetDefault()),;
				", DBF EXTENSION:", ALLTRIM(hb_rddInfo( RDDI_TABLEEXT )),;
				", INDEX EXTENSION:" + INDEXEXT()
		? "Memo extension:", ALLTRIM( hb_rddInfo( RDDI_MEMOEXT )),;
				"blocksize:", hb_rddInfo( RDDI_MEMOBLOCKSIZE )
		
		? "Lockscheme:", ALLTRIM(STR(hb_rddInfo( RDDI_LOCKSCHEME )))
				
		LETO_TOGGLEZIP( 1 )
		
		? "NETWORK TRAFFIC COMPRESSION:", Iif( LETO_TOGGLEZIP() > 0, "ON", "OFF" )
		? "----------------------------------------------"
		?
	ENDIF
#ENDIF	

// O CAMINHO DESTE BANCO DE DADOS ESTÁ NO DATAPATH DO LETODB.INI
// FAÇA UM TESTE RODANDO O EXE EM OUTRA PASTA DIFERENTE.
// EXECUTE A FERRAMENTA "console 127.0.0.1" PARA MONITORAR A CONEXÃO

USE CADASTRO ALIAS CAD SHARED New
SET INDEX TO ("CADASTRO"+INDEXEXT())

CAD->(DBGOTO(5))
? CAD->RAZAO
? CAD->FANTASIA
? CAD->CNPJ

inkey(0)
DbCommitAll()
#IFDEF __LETODBF
   Leto_CloseAll()
   Leto_Disconnect()
#ELSE
   DbCloseAll()
#ENDIF

No seu EXIT PROCEDURE ou antes do QUIT não esqueça de finalizar a aplicação dando LETO_CLOSEALL() e LETO_DISCONNECT().

Caso você use SET RELATION então antes de fechar tudo você deve limpar esses relacionamentos com SET RELATION TO ou DbClearRelation().

DESINSTALAR O SERVIÇO LETODBF NO WINDOWS

Caso queira desinstalar o LETODB como serviço do Windows, dê um "service delete" no prompt de comando como administrador assim:

sc delete letodbf_service

 

INSTALAR O LETODBF NO LINUX

Clique aí para ver como instalar o LetoDBf no Linux.

Downloads: 

Total votes: 0

Comentários

Páginas