No arquivo de log de erros do SQL Server encontrei as seguintes linhas:
2018-02-22 14:10:58.95 spid17s Starting up database 'msdb'.
2018-02-22 14:10:58.95 spid16s Starting up database 'ReportServer'.
2018-02-22 14:10:58.95 spid18s Starting up database 'ReportServerTempDB'.
2018-02-22 14:10:58.95 spid19s Starting up database 'XYZ'.
Se eu verificar o status do banco de dados XYZ antes desse horário, ele está ONLINE
usando a seguinte instrução:
SELECT state_desc FROM sys.databases WHERE name='XYZ'
...mas quando tento me conectar a esse banco de dados usando um aplicativo C#, ele não consegue se conectar ao banco de dados.
O erro é:
Falha no login para o usuário 'asd'.
Motivo: Falha ao abrir o banco de dados explicitamente especificado.
Eu tentei três usuários diferentes (usuário do Windows, sa, usuário do SQL Server definido para o aplicativo). O problema acontece quando executo o aplicativo na inicialização do SO, mas se eu iniciá-lo manualmente após a inicialização, nenhum erro acontece, então acho que todas as configurações do SQL Server e do firewall estão corretas.
Eu também verifiquei antes disso se o status do serviço está em execução.
O que mais devo verificar para garantir que o banco de dados esteja realmente online e pronto para consultas?
Estou procurando uma chave que me diga que não há problema em consultar o banco de dados, em vez de atrasar por um tempo (mesmo não com base em um motivo claro).
Pensei em verificar o log de erros para o texto "Iniciando o banco de dados 'XYZ'", mas isso significa que tenho que adicionar uma configuração para o aplicativo para o caminho do log de erros do SQL Server. Significa também ler o arquivo muitas vezes até encontrar essa frase.