Esta biblioteca pode ser utilizada em aplicações com dois servidores (Hot-Standby) para identificar na tela o estado de cada servidor.
Funcionamento:
O servidor ativo é detectado por um script no evento Constructor do XObject HotStandbyStatus.
Set WshNetwork = CreateObject("WScript.Network")
ServidorAtivo = WshNetwork.ComputerName
A lógica para detectar o status do outro servidor baseia-se no sincronismo entre os bancos de dados de cada servidor. Para ativar esse recurso, a propriedade EnableSynchronization deve estar habilitada.
Resumidamente, a biblioteca grava um registro a cada 5 segundos em uma tabela do banco de dados local e faz uma consulta na tabela equivalente do outro servidor para verificar se ela está sincronizada. De acordo com o resultado dessa Consulta, é definido o status do outro servidor:
- Se ela não retornar nenhum dado, o servidor está em falha (desligado ou fora da rede).
- Se ela retornar um registro ‘antigo’, o servidor está em manutenção (desabilitado).
- Se ela retornar um registro atual (considerando um tempo de atraso para a realização do sincronismo), o servidor está rodando (em standby).
NOTA: a biblioteca só funciona com o banco de dados SQL Server (ou SQL Server Express), que deve ter sido previamente instalado e configurado nos dois servidores.
Configuração:
Antes de configurar a biblioteca, insira dois objetos Banco de Dados na aplicação: um para realizar a gravação local (DB1), o outro para permitir a consulta ao servidor reserva (DB2).
Para utilizar a biblioteca, insira o objeto HotStandbyStatus na pasta de dados, e configure as seguintes propriedades deste modo:
- DBLocal: associe-a ao objeto Banco de Dados local
- DBStandby: associe-a ao objeto Banco de Dados reserva
- ServerName1: digite o nome do Servidor 1
- ServerName2: digite o nome do Servidor 2
- OldRecordTime: tempo (em segundos) para que o timestamp do registro seja considerado ‘antigo’
Depois, insira na tela o objeto HotStandbyViewer e associe a propriedade Source ao objeto HotStandbyStatus configurado anteriormente.
Observações:
- O status do servidor reserva pode levar alguns segundos para ser atualizado, pois depende do período de realização da Consulta.
- A configuração dos objetos Banco de Dados deve ser ajustada (invertida) no servidor secundário. Ou seja, no servidor secundário, o objeto DB1 deve conectar-se ao banco de dados do servidor secundário e o objeto DB2 deve conectar-se ao banco de dados primário.
As figuras abaixo demonstram como configurar os objetos de banco de dados no servidor secundário.
No anexo deste artigo estão a biblioteca e uma aplicação exemplo.