Fórum Número de conexões - Firebird #274024

24/03/2005

0

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.


Fabricio Lb

Fabricio Lb

Responder

Posts

28/03/2005

Fabricio Lb

Tentei usar o TIBDatabaseInfo mas sem sucesso. Alguma outra idéia?

Valeu


Responder

Gostei + 0

29/03/2005

Fabricio Lb

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:

    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


Responder

Gostei + 0

29/03/2005

Fred

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!!


Responder

Gostei + 0

29/03/2005

Christian_adriano

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.


Responder

Gostei + 0

29/03/2005

Fabricio Lb

Valeu a todos pela ajuda.

Resolvi o problema usando [b:990bef16ab]TIBDatabaseInfo[/b:990bef16ab] mesmo.

Falow...


Responder

Gostei + 0

29/03/2005

Christian_adriano

Olá Amigo ´Fabricio´,


Poste aqui a sua solução, pode ocorrer de mais alguém esteja precisando.






[]´s.

Christian.


Responder

Gostei + 0

15/07/2008

Powerlog Tecnologia

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 ?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar