Tenho o espelhamento configurado em um banco de dados de produção. Eu tenho uma configuração de login no banco de dados que atende ao banco de dados e ao espelho. Possui informações de login e configuração idênticas.
Quando faço o failover do banco de dados, o aplicativo ASP.NET faz o failover para o segundo banco de dados (tem um parceiro de failover identificado), mas o login para de funcionar. Por algum motivo, depois de um tempo, ele começa a funcionar. Quando faço o failback para o banco de dados de produção original, o aplicativo ASP.NET é expulso novamente - embora eu saiba que o login existe na produção porque o aplicativo foi capaz de fazer login originalmente.
Aqui está a cadeia de eventos:
- Produção + Espelho têm o mesmo login
- Failover para Mirror, login rejeitado. Começa a funcionar por algum motivo misterioso.
- O espelho falha na produção original, o login que inicialmente estava funcionando agora não está funcionando.
Você precisa garantir que os SIDs dos logins sejam os mesmos em ambos os servidores. A única maneira de garantir que sejam iguais é fazer o script de login do servidor de trabalho para o servidor espelho. Você não pode simplesmente recriar os logins com o mesmo nome e senha, pois o login não corresponderá ao usuário que existe no banco de dados. Quando você
CREATE LOGIN
deve usar aSID = xxx
opção.Talvez o código abaixo o ajude a apontar na direção certa.