Configurar Firebird em Rede XP com Win2000

Firebird

16/08/2004

Uso um servidor Win2000. Estou tentando configurar uma estação com WinXp em Firebird 1.5 usando um arquivo .ini
coloquei várias configurações. ex: 192.168.1.11:c:\saude\saude.gdb - várias e nenhuma reconheceu o servidor embora a máquina esteja pingando normalmente.
Alguém pode me ajudar?


Amilton/pr

Amilton/pr

Curtidas 0

Respostas

Fsflorencio

Fsflorencio

16/08/2004

Você já tentou conectar o seu banco através de outro aplicativo como o ibconsole ou quickdesk? Se não, faça um teste, pois aparentemente o caminho do banco está correto.


GOSTEI 0
Vinicius2k

Vinicius2k

16/08/2004

Colega,

Vc instalou o Firebird Client na estação XP?


GOSTEI 0
Afarias

Afarias

16/08/2004

Vc pode dizer qual o erro?? Ia ajudar muito!



T+


GOSTEI 0
Amilton/pr

Amilton/pr

16/08/2004

Seguinte colegas . . .
Meu instalador do firebird é: Firebird 1.5.0.3744.RC4-Win32.exe.
Quando faço a instalação tem as opções:
1- Full intallation of super server and developments tools.
2- Full intallation of classic server and developments tools.
3- installation of client tolls for developers and database administrators
4- Minimun client install - no server, no tolls.

Então eu instalo a opcao 1 para o Servidor e a opção 3 para o cliente, embora no cliente eu tbém já instalei a opção 4.
Faço o acesso a base de dados por arquivo .ini e funciona bem.
Quando tento acessar nas estações na máquina servidora aparece essa mensagem:
Missing Configuration File: c:\Arquivo de programa\Firebird\Firebird_1_5\alias.conf
e botão OK.
Fecho a mensagem então a estação entra no sistema mas quando foi fazer a manipulação de dados dá erro de acesso nas tabelas.

As estações todas exengarm o servidor normalmente.
Uso pra acesso as tabelas o componente IBDataSet e relatórios pesquisas o componente IBQuery.

Agradeço se alguém puder ajudar!!!


GOSTEI 0
Afarias

Afarias

16/08/2004

|Missing Configuration File: c:\Arquivo de programa\Firebird\Firebird_1_5
|\alias.conf

Pela mensagem, está faltando o arquivo alias.conf no servidor (basta criar um arquivo texto em branco com este nome) -- ou, na verdade o erro é na estação, pq seu programa está tentando fazer uma conexão LOCAL e não no servidor! Dai é bom vc depurar direitinho o programa.

É muito comum por exemplo compilar o programa esquecendo a propriedade Connected do Database como TRUE o q causa esse tipo de coisa -- se vc usa IBX pode configurar a propriedade AllowStremedConnected para FALSE para evitar isso.

Se vc usa ClientDataSets tb NUNCA esqueça um deles aberto em Design (Active = True) ou tb passará por isso.

Ahhh!! e antes de mais nada!! NÃO use o FB 1.5 RC4!! Use a versão FINAL! Ok?! Tem muitos bugs corrigidos, inclusive do script de instalação.
(vai q é esse o problema!)



T+


GOSTEI 0
Amilton/pr

Amilton/pr

16/08/2004

seguinte . . .
O arquivo aliases.conf está na pasta c:\arquivo de programa\Firebird\Firebird_1_5 do servidor mas não tem na estação(será isso?);
Para a conexão do programa uso um arquivo .ini assim:
192.168.1.3\Saude\Saude.gdb, depois recebo esse valor na propriedade databasename e coloco a propriedade connected pra True.
No caminho não está dando erro, até porque depois das mensagens de erro a estação entra no ar, embora não consiga acessar nenhuma tabela.
A propriedade AllowStremedConnected do componente IbDatabase que é ligado ao IbTransaction está True;
No meu DataModule tem um componente ClientDataSet ligado ao IbDataBase e ao IbTransaction, mas não tem a propriedade Design, tem active e está false. Vou remover esse componente não sei sua utilidade.

Cheguei a instalar o Firebird 1.0 e continuou com o erro que falei.
As instalações que fiz de Servidor e Cliente estão certas?
Onde posso baixar a versão mais nova do Firebird?


GOSTEI 0
Afarias

Afarias

16/08/2004

|O arquivo aliases.conf está na pasta c:\arquivo de
|programa\Firebird\Firebird_1_5 do servidor mas não tem na estação
|(será isso?);

NÃO -- este arquivo é requerido apenas pelo Firebird Server


|Para a conexão do programa uso um arquivo .ini assim:
|192.168.1.3\Saude\Saude.gdb,

Errado! a string de conexão correta para o protocolo TCP e servidor Windows é:

192.168.1.3:c:\Saude\Saude.gdb


(supondo q a pasta saude esteja em C)


|depois recebo esse valor na propriedade databasename e coloco a
|propriedade connected pra True.

Vc leu minha última mensagem?? Nada disso adienta se vc deixou a propriedade Connected=True e AllowStreamedConnected=True ou esteja usando ClientDataSets e tenha deixado algum com Active=True


|No caminho não está dando erro, até porque depois das mensagens de
|erro a estação entra no ar, embora não consiga acessar nenhuma
|tabela.

Então é pq não conectou! (creio)


|A propriedade AllowStremedConnected do componente IbDatabase que
|é ligado ao IbTransaction está True;

Pois é, como falei na outra mensagem ela deve ser FALSE!


|No meu DataModule tem um componente ClientDataSet ligado ao
|IbDataBase e ao IbTransaction,

:?: :?: ClientDataSets não são ligados a IBDatabases ou IBTransactions


|mas não tem a propriedade Design,

Não mesmo!


|tem active e está false.

Ok, está correto


|Vou remover esse componente não sei sua utilidade.

:?: :?: :?:


|Cheguei a instalar o Firebird 1.0 e continuou com o erro que falei.

Era de se esperar!


|As instalações que fiz de Servidor e Cliente estão certas?

SIM, mas com tb já falei, nào use RC, use a versão final do FB 1.5


|Onde posso baixar a versão mais nova do Firebird?

http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_download_15



T+


GOSTEI 0
Amilton/pr

Amilton/pr

16/08/2004

A conexão funcionou assim: 192.168.1.3\c:\saude\saude.gdb
com 192.168.1.3:c:\saudezsaude.gdb - dá erro na conexão com o banco.

Coloquei a propriedade AllowStremedConnected em False do componente IbDataset.
Eliminei o componente IbClientDataSet e compilou o projeto novamente.
Ah! esse componente tem as propriedade DbConnection e DbTransaction para ligar ao IbDataSet e ao IbTransaction.

Baixei a versão Firebird_1.5.1.4481-win32.exe e vou instalar)é a ultima versão)
O que é Firebird_1.5.1.4481_embed_win32?
Quando se trabalha com o Firebird pode ter a instalação de Interbase na máquina?

Aguardo retorno . . .


GOSTEI 0
Afarias

Afarias

16/08/2004

|A conexão funcionou assim: 192.168.1.3\c:\saude\saude.gdb
|com 192.168.1.3:c:\saudezsaude.gdb - dá erro na conexão com o
|banco.

É estranho vc ter erro com a string q usa TCP. A q vc falou estar dando certo está usando Named Pipes.


|Coloquei a propriedade AllowStremedConnected em False do
|componente IbDataset.

IBDatabase, Bom!


|Ah! esse componente tem as propriedade DbConnection e DbTransaction
|para ligar ao IbDataSet e ao IbTransaction.

SIM, o TIBClientDataSet tem sim... o TClientDataSet q não.


|O que é Firebird_1.5.1.4481_embed_win32?

Uma versão do Firebird para acesso local apenas


|Quando se trabalha com o Firebird pode ter a instalação de Interbase na
|máquina?

(servidores né?) com FB 1.5 sim



T+


GOSTEI 0
Amilton/pr

Amilton/pr

16/08/2004

Instalei a versão Firebird-1.5.1.4481-Win32.
Mesmo removendo todas as instalações anteriores sempre dava a mensagem que tinha algum serviço de banco ativo, mesmo assim terminei a instalação.
Uso o IbExpert para a manutenção das tabelas e agora tá dando o erro de gds32.dll. Atualizei o Ibexpert para a versão 2004 e continua com o erro.
Alguém pode me ajudar?


GOSTEI 0
Amilton/pr

Amilton/pr

16/08/2004

Já resolvi. É só apagar a dll que a instalação cria uma nova.


GOSTEI 0
Vinicius2k

Vinicius2k

16/08/2004

Colega,

Alguns componentes de acesso, como o IBX, por serem ´feitos para o IB´ estão ´presos´ na existência da gds32.dll, que não existe mais no FB 1.5...

O procedimento mais indicado para remover instalações anteriores e instalar novas versões e manter a compatibilidade de com os estes componentes é:
- Fazer a remoção convencional através do uninstall da versão anterior.
- Fazer a remoção manual da gds32.dll (System do Windows)
- Instalar a nova versão e marcar (ao final do Setup) a opção que efetua uma cópia da fbclient.dll com o nome de gds32.dll
O resultado final é que vc terá a dll padrão do firebird (fbclient.dll) e um clone dela com o nome de gds32.dll (IB)...
Vc pode fazer esta cópia da fbclient.dll como gds32.dll manualmente também...

No caso do IBExpert, note que ele também lhe solicita a informação do nome da DLL cliente q vc deseja utilizar, basta informar fbclient.dll ou gds32.dll (a clone da fbclient.dll)... como padrão está a gds32.dll, mas a sua, provavelmente, ainda é a do IB.

Não cheguei a trabalhar pra valer com o FB 1.5 nas versões RC, mas seria aconselhável que q vc fizesse um back-up do banco com a versão anterior instalada e efetuasse um restore na versão nova... este é o procedimento para migração do FB 1.0 ou do IB 6 para o FB 1.5, já que estruturas internas foram alteradas no 1.5...

t+


GOSTEI 0
Amilton/pr

Amilton/pr

16/08/2004

seguinte:
Instalei o firebird 1.5.1.4481_win32;
No Servidor(Win2000) a versão superServer
e na estação(WinXp) a versão Client;
Delphi6; rede em dominio;
Uso arquivos .ini pra acessar o banco:
No servidor: \\192.168.1.11\C:\Saude\Saude.gdb
Na estação: 192.168.1.11:C:\saude\saude.gdb
Fui testando com mensagens pra descobrir o erro . . . Primeiramente chamo a tela de senham leio o arquivo ini recebo num edit no evento on create do Data module fiz assim:
try
Ibdata1.databaseName:=F_Senha.edit5.text;
Ibdata1.Connected:=true;
showmessage(´banco conectado´);
except
showmessage(´banco nao conectado´);
end;
As mensagens funcionaram bem até na estação.
Depois disso a estação trava e dá aquela mensagem de erro do windows, eu não sei pra onde o programa tá indo já que retorno ao formulario de senha pra confirmar a entrada mas nesse form roda o Oncreate, depois o DataModule e não chega a ativar o form de senha.
A propriedade AllowStremedConnect do IbDataBase está false;
uso no programa componentes IbDataSet pra inclusão de dados;

Preciso muito resolver essa situação, agradeço a quem puder ajudar!


GOSTEI 0
Vinicius2k

Vinicius2k

16/08/2004

No servidor: \\192.168.1.11\C:\Saude\Saude.gdb

Agora entendi como funcionou com NamedPipe... :D
mas essa linha, teoricamente, só vai funcionar no servidor... a não ser q vc tenha o protocolo NetBeUI na rede..
vc tbm pode(ou deve) usar :[b:4eef6d8470] localhost:C:\Saude\Saude.gdb[/b:4eef6d8470] no servidor...
Depois disso a estação trava e dá aquela mensagem de erro do windows...

Que mensagem de erro? Talvez esteja nela a resposta...

Vc lê o arquivo .ini no login, mas em qual momento o IBDataBase está recebendo o caminho da conexão? Na minha opinião, o correto seria vc ler o .ini o OnCreate do DataModule...

T+


GOSTEI 0
Amilton/pr

Amilton/pr

16/08/2004

Seguinte . . .
Onde exatamente eu defino:
localhost:C:\Saude\Saude.gdb no servidor?

A mensagem de erro é aquela do windows:
[Executavel]encontrou problemas e precisa ser fechado;
Tem detalhes assim:
appName: Dpr001.exe AppVer 0.0.0.0 ModName: Kernel32.dll

É no OnCreate do DataModule que estou recebendo o arvquivo .ini, antes coloquei-o num edit e ficou assim:
procedure TdataM.DataModuleCreate(Sender: TObject);
begin
try
Ibdata1.databaseName:=F_Senha.edit5.text;
Ibdata1.Connected:=true;
showmessage(´banco conectado´);
except
showmessage(´banco nao conectado´);
end;
end;

Essas mensagens aparece na estação, depois é que dá as mensagens de erro. Eu não sei extamente pra onde o programa está indo na sua execução, pela lógica deveria executar o formulário de senha, coloquei uma mensagem no OnActivat mas o sistema não chega nela, o erro é antes, embora tenha colocado mensagem no OnCreate desse form e mostrou normalmente. Parece que o Erro está ocorrendo ai, depois do Oncreate do DataModule e antes de ativar o formulário da Senha.
Agradeço que puder ajudar!


GOSTEI 0
Vinicius2k

Vinicius2k

16/08/2004

Resumindo :

O caminho para utilizar a aplicação no servidor deve ser :
[b:61e9f1be6c]localhost:c:\saude\saude.gdb[/b:61e9f1be6c]

O caminho para as estações deve ser :
[b:61e9f1be6c]192.168.1.11:c:\saude\saude.gdb[/b:61e9f1be6c]

Estah um pouco difícil definir onde e qual erro está ocorrendo...

1. Quando vc recebe estas mensagens a aplicação está aberta no servidor? Se sim é pq a configuração do caminho no servidor está incorreta e vc deve usar a que eu mostrei acima...

2. Tenho o palpite de que o problema está aqui... Vi vc falando sobre TIBClientDataSet... vc removeu tudo o que os envolvia? se não removeu vc precisa colocar na estação e registrar a midas.dll (copiar para o system e executar no prompt regsvr32 midas.dll)

3. Vc precisa testar se vc só não está conseguindo conectar-se através da aplicação... tente, na estação, conectar-se ao banco com outra ferramenta, como IBExpert ou IBOConsole... se vc conseguir conectar-se com outra ferramenta, podemos descartar qualquer problema na rede e com as instalações de servidor e cliente do Firebird...

T+


GOSTEI 0
Amilton/pr

Amilton/pr

16/08/2004

seguinte . . .
//O caminho para utilizar a aplicação no servidor deve ser :
// localhost:c:\saude\saude.gdb

Funcionou legal assim.

O caminho para as estações deve ser :
192.168.1.11:c:\saude\saude.gdb

Na estação já esta assim:

O erro aparece com o programa aberto ou não no servidor;

Dei uma geral no sistema e parece não haver nada sobre TIbClientDataSet;
Sobre registrar o midas.dll . . . copiei a dll pro system da estação; o comando regsrv32 midas.dll não rodou, acusa que não tem esse comando.

Instalei a versão Server na estação também e o IbExpert 2004. Tesntei acessar a tabela no servidor através da rede e deu o seguinte:
´unsuccessul execution cased by a system error that precludes successul execution of subsequent statements.
I/O error for file ´Hd_Amilton\Saude\saude.gdb´ .
Error While try to open file .
O sistema não ode encontrar o caminho especificado ´

Realmente a estação parece não encontrar o caminho . . . mas isso precisa ter uma saída. Agradeço a quem puder ajudar!!!


GOSTEI 0
Vinicius2k

Vinicius2k

16/08/2004

[quote:294aec7d75=´Amilton/Pr´]Sobre registrar o midas.dll . . . copiei a dll pro system da estação; o comando [b:294aec7d75]reg[color=red:294aec7d75]srv[/color:294aec7d75]32[/b:294aec7d75] midas.dll não rodou, acusa que não tem esse comando.[/quote:294aec7d75]
é REGSVR32 midas.dll

[quote:294aec7d75=´Amilton/Pr´]Instalei a versão Server na estação também[/quote:294aec7d75]
Não precisava... uma ferramenta é como um cliente normal... basta ter o Firebird Client para que ela rode e seja capaz de acessar o banco normalmente...

[quote:294aec7d75=´Amilton/Pr´]Tesntei acessar a tabela no servidor através da rede e deu o seguinte:
´unsuccessul execution cased by a system error that precludes successul execution of subsequent statements.
I/O error for file ´[color=red:294aec7d75]Hd_Amilton\Saude\saude.gdb[/color:294aec7d75]´ .
Error While try to open file .
O sistema não ode encontrar o caminho especificado ´[/quote:294aec7d75]
Vc tem que colocar na ferramenta (IBExpert) o servidor como ´remote´ e indicar no caminho do banco o mesmo caminho que vc está indicando nas estações para a sua aplicação : 192.168.1.11:c:\saude\saude.gdb
O IBExpert é soh um cliente como seria sua aplicação...
Faça o teste corretamente com o IBExpert e retorne... se vc conseguir acessar o banco com ele, vc vai ter isolado o problema -- a aplicação...

T+


GOSTEI 0
Amilton/pr

Amilton/pr

16/08/2004

Blz.
O registro do Midas.dll funcionou legal.

Acessei as tabelas do sistema via IbExpert colocando o IP como vc. disse e realmente funcionou; acessou as tabelas do sistema no servidor, agora acredito que o problema pode estar no aplicativo.

Bom . . . faço a conexão com o banco no Evento OnCreate do DataModule, assim:

procedure TdataM.DataModuleCreate(Sender: TObject);
begin
try
Ibdata1.databaseName:=F_Senha.edit5.text;
Ibdata1.Connected:=true;
showmessage(´banco conectado´);
except
showmessage(´banco nao conectado´);
end;
end;
Depois não sei exatamente o que está acontecendo porque deveria ir pro formulario de senha. Coloquei mensagens no OnCreate desse form e funcionou tbém, depois coloquei uma mensagem no OnActivate e ela não mostra, então não está chegando.
Muito obrigado pela atenção, mas ainda continuo precisando de ajuda!


GOSTEI 0
Vinicius2k

Vinicius2k

16/08/2004

Ótimo. O problema foi isolado...

Deixe-me entender uma coisa...

Vc tenta se conectar ao banco no OnCreate do DataModule, buscando um valor presente no formulário de senha correto?
Bem, normalmente, meus DataModules são criados logo após o formulário principal da aplicação, e são os únicos que eu deixo para serem criados automaticamente (todos os outros eu crio e destruo dinamicamente)...

Se na sua sequencia de criação o DataModule estiver sendo criado antes do form de senha, o form de senha ainda não existe, logo ele não pode ceder nenhum valor para nenhum outro... seria normal até que vc tivesse uma mensagem tipo ´Access Violation at address ...... ´

Na minha opinião, o mais correto é vc ler o diretamente .ini onde está a configuração do caminho do banco, no OnCreate do DataModule e não buscar o valor de um outro form, que, pode não existir ainda...
Acho que seu problema está na sequencia em que vc está trabalhando a entrada das informações...

Verifique estas situações e retorne... tenha paciência que chegaremos lá :wink:

T+


GOSTEI 0
Gandalf.nho

Gandalf.nho

16/08/2004

Já que você usa a paleta IBX, experimente usar o componete IBDatabaseINI que facilita na hora de usar um arqjuivo INI com os dados da conexão.


GOSTEI 0
Amilton/pr

Amilton/pr

16/08/2004

Blz. Funcionou legalzinho!

Fiz a conexão com o banco no OnCreate do DataModule e em seguida criei o formulário de senha, funcionou legal mesmo . . . Meus agradecimentos sem tamanho a todos que colaboraram e especialmente para vinicus2K que me ajudou demais;
mas que Gandalf.nho mencionou o componente IbDatabaseIni pra fazer conexão com arquivos .Ini, como é extamente a configuração desse componente usando arquivos .ini?


GOSTEI 0
Vinicius2k

Vinicius2k

16/08/2004

Blz ! :)

Bem, agora eu vou pedir que a Gandalf ou outro colega assuma, pq este componente do IBX eu nunca utilizei...

T+


GOSTEI 0
Gandalf.nho

Gandalf.nho

16/08/2004

Primeira coisa deixe a propriedade AllowStreamedConnected do IBDatabase com False. Coloque o componente IBDatabaseINI e configure sua propriedade Database de acordo. Na propriedade FileName você irá pôr o nome de seu arquivo INI que deverá conter os parâmetros de conexão para o banco de maneira semelhante a propriedade Params do próprio IBDatabase. O nome da seção onde o componente irá procurar as informações (se quiser usar o INI para outras coisas tb) é o que aparece na propriedade Section. Um exemplo para você entender:

[b:6c21c6677c][Database Settings][/b:6c21c6677c]
[b:6c21c6677c]database=[/b:6c21c6677c]caminho_banco_dados
[b:6c21c6677c]user_name=[/b:6c21c6677c]nome_usuário
[b:6c21c6677c][b]sql_role_name=[/b:6c21c6677c]nome_role
lc_ctype=[/b]nome_charset (no meu caso, WIN1252)

Em tempo de execução basta ativar o IBDatabase que o IBDatabaseINI automaticamente irá pegar as informações e repassar ao componente de conexão sem precisar nenhuma linha de código.


GOSTEI 0
Amilton/pr

Amilton/pr

16/08/2004

Uma curiosidade . . .
Gandalf.nho é mulher?


GOSTEI 0
Amilton/pr

Amilton/pr

16/08/2004

Colegas, acredito que esse tópico foi resolvido com sucesso, agradeço imensamente a participação de todos que além de resolverem o meu problema podem ter ajudado a outros também a esclarecerem dúvidas a respeito da configuração do banco em rede, e, aproveito pra comunicar que estou abrindo um novo tópico sobre o uso de componentes pra acesso as tabelas do banco num sistema já que temos algumas opções e uso correto pode determinar um melhor desempenho de tudo que envolve o perfeito funcionamento do aplicativo; Gostaria que houve a participação de todos, especialmente de AFarias, Vinicius2K, Gandalf.nho . . . enfim todos que se interessarem.
Meu muito obrigado a todos!!!


GOSTEI 0
Afarias

Afarias

16/08/2004

[quote:fa4d6475da=´Amilton/Pr´]Uma curiosidade . . .
Gandalf.nho é mulher?[/quote:fa4d6475da]

BINGO!

;)



T+


GOSTEI 0
POSTAR