Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Mudando o status da base de dados no Delphi

Veja neste artigo como derrubar uma base de dados para proibir o acesso de aplicações clientes.

 

Em algumas situações, como por exemplo, a execução do backup/restore, você vai se deparar com a necessidade de proibir o acesso das aplicações clientes a sua base de dados. Esse artigo apresenta a solução desse problema usando um componente nativo no Delphi 7 chamado TIBConfigService que pode ser encontrado na paleta InterBase Admin.

 

Após adicionar o componente TIBConfigService na sua aplicação, falta somente a implementação do código para mudar o status da base de dados.

 

Abaixo está um exemplo de como alterar o status da base de dados para off-line, ou seja, derruba-la.

 

with IBConfigService1 do

begin

  DatabaseName:=caminno para a base de dados;

  ServerName:=nome do servidor;

  LoginPrompt:=False;

  Params.Clear;

  {antes de derrubar a base de dados você deve se conectar a base de dados.

  o usuário que se conecatar a base de dados para derruba-la será o único

  que poderá tonar a base de dados online de novo.}

  Params.Add(user_name=SYSDBA);//nome do usuário que vai derrubar a base

  Params.Add(password=masterkey);//senha do usuário

  try                   

    Active:=True;//ativa o serviço, ou seja, se conecta na base

    {a linha abaixo ira mudar o status da base de dados para off-line

    e fará com que todas as conexões ativas com esta base seja perdida}

    ShutdownDatabase(Forced, 0);

  except

    ShowMessage(Não foi possível mudar o status da base de dados para off-line);

  end;

  Active:=False;//desativa o serviço, ou seja, desconecta da base

end;

Listagem 1 – Derrubando uma base de dados

 

O procedimento ShutdownDataBase possui dos parâmetros: Options e Wait. O parâmetro Options especifica como a base de dados será derrubada e o parâmetro Wait informa quantos segundos será aguardado antes da base ser derrubada. Veja na tabela abaixo os valores permitidos para o parâmetro Options e o que ele significa.

 

Valor

Descrição

Forced

Derruba a base de dados após o tempo definido no parâmetro wait. Você pode derrubar a base de dados imediatamente se definir wait como 0.

DenyTransaction

Não serão permitidas novas transações durante o tempo definido no parâmetro wait e se após o tempo definido ainda houver pelo menos uma transação ativa a base não será derrubada.

DenyAttachment

Não serão permitidas novas conexões durante o tempo definido no parâmetro wait e se após o tempo definido ainda houver pelo menos uma conexão ativa a base não será derrubada.

 

Como visto na listagem 1, Antes de você derrubar uma base de dados você deve conectar na base com algum usuário e este usuário será o único que poderá mudar seu status para on-line novamente. Também é importante saber que durante o período que a base de dados estiver off-line, o usuário que à derrubou poderá se conectar e usar a base normalmente.

 

Agora vamos ver o código para marcar a base de dados como on-line.

 

with IBConfigService1 do

begin

  DatabaseName:=caminho para a base de dados;

  ServerName:=nome do servidor;

  LoginPrompt:=False;

  Params.Clear;

  {para definir o status da base de dados como on-line novamente

  você deve usar o mesmo usuário que a derrubou.}

  Params.Add(user_name=SYSDBA);//nome do usuário

  Params.Add(password=masterkey);//senha do usuário

  try                   

    Active:=True;//ativa o serviço, ou seja, conecta na base

    {a linha abaixo ira mudar o status da base de dados para on-line}

    BringDatabaseOnline;

  except

    ShowMessage(Não foi possível mudar o status da base de dados para on-line);

  end;

  Active:=False;//desativa o serviço, ou seja, desconecta da base

end;

Listagem 2 – Mudando o status da base para on-line

 

Essas duas funções são muito úteis, principalmente, quando se tem aplicações que trabalhão em rede, mas você não pode se esquecer que o usuário que a derrubou continuará tendo acesso a base de dados normalmente e que ele será o único que pode torna-la on-line novamente. Tomando esses cuidados você não terá problemas.





    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



[Este post ainda não foi associado a uma sequência]
Autor
Rafael Stavarengo

Programador de sistemas da Cheina Informática com 9 anos de experiência, integrante da equipe editorial da revista Clube Delphi. Domínio em Java, PHP e UML. Sólido conhecimento em Design Patterns e metodologias ágeis. Graduado em Análise e Desenvolvimento de Sistemas pela UNIPAR. Blog: http://stava...


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível para assinantes da ClubeDelphi ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03