Dans le fichier journal des erreurs SQL Server, j'ai trouvé les lignes suivantes:
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'.
Si je vérifie l'état de la base de données XYZ avant cette heure, il ONLINE
utilise l'instruction suivante:
SELECT state_desc FROM sys.databases WHERE name='XYZ'
... mais lorsque j'essaie de me connecter à cette base de données à l'aide d'une application C #, il ne peut pas se connecter à la base de données.
L'erreur est:
La connexion a échoué pour l'utilisateur «asd».
Motif: Échec de l'ouverture de la base de données explicitement spécifiée.
J'ai essayé trois utilisateurs différents (utilisateur Windows, sa, utilisateur SQL Server défini pour l'application). Le problème se produit lorsque j'exécute l'application au démarrage du système d'exploitation, mais si je la démarre manuellement après le démarrage, aucune erreur ne se produit, donc je pense que tous les paramètres SQL Server et les paramètres du pare-feu sont corrects.
J'ai également vérifié avant cela que l'état du service est en cours d'exécution.
Que dois-je vérifier d'autre pour m'assurer que la base de données est réellement en ligne et prête pour les requêtes?
Je cherche une clé qui me dit que c'est ok pour interroger la base de données, au lieu de retarder pendant un certain temps (même pas basé sur une raison claire).
J'ai pensé à analyser le journal des erreurs pour le texte "Démarrage de la base de données 'XYZ'", mais cela signifie que je dois ajouter un paramètre pour l'application pour le chemin du journal des erreurs SQL Server. Cela signifie également lire le fichier plusieurs fois jusqu'à ce que je trouve cette phrase.