Pourquoi ne peut pas vous connecter à la database SQL Server 2012 restaurée?

Dans le cadre de l'effort de développement d'un service Windows, j'ai restauré une database de production dans une database de test sur la même instance SQL Server et je peux très bien accéder à la database de test via SSMS. J'ai donné le rôle db_owner à la database à deux autres users qui ne peuvent pas se connecter, les deux ayant une erreur SQL

Erreur: 18456, Gravité: 14, Etat: 38.
login valide mais database indisponible (ou connection non autorisée)

Voici le message de base qui mentionne la database en question comme étant le problème.

La connection a échoué pour l'user 'NT AUTHORITY \ SYSTEM'. Raison: Impossible d'ouvrir la database explicitement définie 'MedFile_TestDataServer'. [CLIENT: ]

La database n'est pas en état "Restauration".

Le premier user est NT Authority\System et le second user Windows. Les deux informations d'identification sont utilisées pour exécuter le service Windows qui accède à la database en mode mise à jour, l'user système du même server, l'user Windows de VS2013 exécutant le service en tant que programme de command sur mon bureau. Les deux peuvent get d'autres copys de cette même database simplement en changeant le nom de la database, donc ne pensez pas à un problème de string de connection. J'ai comparé chaque propriété sur les bases de données qui fonctionnent et ne fonctionnent pas et ne vois aucune différence excepté les noms de files et ces deux connections ont less d'permissions sur les bases de données auxquelles elles peuvent accéder.

Presque comme cette database est gardée indisponible après la restauration, mais je ne trouve aucune propriété de ce type dans la database et je peux y accéder via SSMS. J'ai également redémarré le server contenant la database ergo SQL Server.

J'ai également essayé d'exécuter le service en tant qu'administrateur de database et d'get la même erreur même si cet user accède très bien à la database via SSMS.

Y at-il quelque chose qui peut rendre la database "indisponible"?

Cela fait partie du développement logiciel pour un service Windows essayant d'utiliser une database de test. J'utilise à la fois EF 6.02 et la dernière version d'ADO.NET.

Vérifiez si la propriété "Auto Close" est définie sur "True" dans votre database. Si oui, changez-le en "Faux".

Vous pouvez le voir depuis SSMS: faites un clic droit sur database – Properties – Options.

pouvez-vous vérifier quelle est la database par défaut pour ces deux users?

Si vous avez défini (accidentellement / volontairement) une database par défaut pour l'user de connection SQL Server et que l'user n'a pas les permissions pour accéder à la database, vous obtiendrez cette erreur.