Número de conexões - Firebird
Existe alguma maneira de descobrir o número de conexões ativas em uma base do Firebird, via programação?
Obs: Tenho uma base numa máquina e várias estações acessando essa base simultaneamente.
Grato.
Obs: Tenho uma base numa máquina e várias estações acessando essa base simultaneamente.
Grato.
Fabricio Lb
Curtidas 0
Respostas
Fabricio Lb
24/03/2005
Tentei usar o TIBDatabaseInfo mas sem sucesso. Alguma outra idéia?
Valeu
Valeu
GOSTEI 0
Fabricio Lb
24/03/2005
Boa tarde pessoal....
Acho que minha dúvida não ficou muito clara. Vou tentar esclarecê-la. É o seguinte: eu trabalho com arquitetura Client\Server onde várias estações de trabalho acessam, via BDE, uma micro onde se encontra o servidor de banco de dados (Firebird) e a base de dados. O que acontece é que nesse sistema temos um mecanismo de backup que pode ser acionado de qualquer uma das máquinas estações. O problema é que se houver alguma conexão aberta com a base de dados durante o backup ocorre erro, tanto no backup que gera um arquivo ZIP quanto no backup com compactação de dados do Firebird!
O que eu precisava era saber o número de conexões abertas com a base antes de realizar o backup. Fiz uma implementação que inicialmente funcionou bem, porém após alguns testes percebi que ela só funciona quando o aplicativo executa na mesma máquina onde se encontram instalados o Firebird e a base de dados. Nas demais estações as conexões não são contabilizadas!!! Segue o código:
-------------------------------------------------------------------------------
Código:
-------------------------------------------------------------------------------
A variável sAlias q guarda o ServerName é disposta na seguinte forma:
Ex:´200.221.9.53:C:\base.fdb´, onde o IP é referente a máquina onde se encontra a base de dados.
Se alguém tiver alguma luz....
Grato desde já.
[]´s Fabrício
Acho que minha dúvida não ficou muito clara. Vou tentar esclarecê-la. É o seguinte: eu trabalho com arquitetura Client\Server onde várias estações de trabalho acessam, via BDE, uma micro onde se encontra o servidor de banco de dados (Firebird) e a base de dados. O que acontece é que nesse sistema temos um mecanismo de backup que pode ser acionado de qualquer uma das máquinas estações. O problema é que se houver alguma conexão aberta com a base de dados durante o backup ocorre erro, tanto no backup que gera um arquivo ZIP quanto no backup com compactação de dados do Firebird!
O que eu precisava era saber o número de conexões abertas com a base antes de realizar o backup. Fiz uma implementação que inicialmente funcionou bem, porém após alguns testes percebi que ela só funciona quando o aplicativo executa na mesma máquina onde se encontram instalados o Firebird e a base de dados. Nas demais estações as conexões não são contabilizadas!!! Segue o código:
-------------------------------------------------------------------------------
Código:
bDoBackup := True; try with TIBServerProperties.Create(Application) do begin ServerName := sAlias; LoginPrompt := False; Params.Add(´user_name=´+sUser); Params.Add(´password=´+sPassword); Active := True; try Options := [Database]; FetchDatabaseInfo; if(DatabaseInfo.NoOfAttachments > 0) then bDoBackup := False; finally Active := False; end; end; except bDoBackup := False; end;
-------------------------------------------------------------------------------
A variável sAlias q guarda o ServerName é disposta na seguinte forma:
Ex:´200.221.9.53:C:\base.fdb´, onde o IP é referente a máquina onde se encontra a base de dados.
Se alguém tiver alguma luz....
Grato desde já.
[]´s Fabrício
GOSTEI 0
Fred
24/03/2005
Saber pegar o numero de conexoes pelo Firebird eu nao sei!!! Mas vc poderia fazer um controle vc mesmo!!!, criando uma tabela de conexoes no BD, ai sempre que uma maquina se loga vc joga nessa tabela..saca!!
GOSTEI 0
Christian_adriano
24/03/2005
Olá Amigo,
eu fiz o seguinte, Criei uma Tabela Auxiliar com dois campos, Qtde e DataHora.
Com o Campo ´Qtde´ - eu controlo as entradas e Saídas do Sistema, Entrada, pego a valor do Campo ´Qtde´ e Somo ( Inc(Qtde) ), e na saida da Applicação e Subtraio o valor ( Qtde := Qtde - 1 ).
No Campo DataHora - Controlo Guardo o Dia e Hora das Entradas e Saidas da Aplicação.
Espero que sirva pra vc ter uma ideia.
[]´s.
Christian.
eu fiz o seguinte, Criei uma Tabela Auxiliar com dois campos, Qtde e DataHora.
Com o Campo ´Qtde´ - eu controlo as entradas e Saídas do Sistema, Entrada, pego a valor do Campo ´Qtde´ e Somo ( Inc(Qtde) ), e na saida da Applicação e Subtraio o valor ( Qtde := Qtde - 1 ).
No Campo DataHora - Controlo Guardo o Dia e Hora das Entradas e Saidas da Aplicação.
Espero que sirva pra vc ter uma ideia.
[]´s.
Christian.
GOSTEI 0
Fabricio Lb
24/03/2005
Valeu a todos pela ajuda.
Resolvi o problema usando [b:990bef16ab]TIBDatabaseInfo[/b:990bef16ab] mesmo.
Falow...
Resolvi o problema usando [b:990bef16ab]TIBDatabaseInfo[/b:990bef16ab] mesmo.
Falow...
GOSTEI 0
Christian_adriano
24/03/2005
Olá Amigo ´Fabricio´,
Poste aqui a sua solução, pode ocorrer de mais alguém esteja precisando.
[]´s.
Christian.
Poste aqui a sua solução, pode ocorrer de mais alguém esteja precisando.
[]´s.
Christian.
GOSTEI 0
Powerlog Tecnologia
24/03/2005
Havia postado no fórum do IB/FB
http://forum.devmedia.com.br/viewtopic.php?t=59332
Atualmente eu uso componentes DBExpress. Quando os componentes eram do IB, eu usava o DatabaseInfo, conforme sugerido.
Como eu faço agora, já que tenho um TSQLConnection ao invés de um IBDatabase ?
http://forum.devmedia.com.br/viewtopic.php?t=59332
Atualmente eu uso componentes DBExpress. Quando os componentes eram do IB, eu usava o DatabaseInfo, conforme sugerido.
Como eu faço agora, já que tenho um TSQLConnection ao invés de um IBDatabase ?
GOSTEI 0