Nel file di registro degli errori di SQL Server ho trovato le seguenti righe:
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 controllo lo stato del database XYZ prima di questo momento, sta ONLINE
usando la seguente dichiarazione:
SELECT state_desc FROM sys.databases WHERE name='XYZ'
... ma quando provo a connettermi a questo database usando un'applicazione C #, non riesco a collegarmi al database.
L'errore è:
Accesso non riuscito per l'utente 'asd'.
Motivo: impossibile aprire il database specificato esplicitamente.
Ho provato tre diversi utenti (utente Windows, sa, utente SQL Server definito per l'applicazione). Il problema si verifica quando eseguo l'applicazione all'avvio del sistema operativo, ma se lo avvio manualmente dopo l'avvio, non si verificano errori, quindi penso che tutte le impostazioni di SQL Server e quelle del firewall siano corrette.
Ho anche verificato prima che lo stato del servizio sia in esecuzione.
Cos'altro devo verificare per accertarmi che il database sia effettivamente online e pronto per le query?
Sto cercando una chiave che mi dica che va bene interrogare il database, invece di ritardare per un certo tempo (anche se non basato su un motivo chiaro).
Ho pensato di scansionare il registro errori per il testo "Avvio del database 'XYZ'", ma ciò significa che devo aggiungere un'impostazione per l'applicazione per il percorso del registro errori di SQL Server. Significa anche leggere il file molte volte fino a quando non trovo questa frase.