web-dev-qa-db-fra.com

SQL Server 2008: la base de données [dbName] n'est pas accessible

J'ai eu cette erreur d'une autre personne et j'ai manqué d'idées. Je peux accéder à cette base de données sans aucun problème, la base de données est en mode MULTI_USER, la personne qui reçoit l'erreur est un utilisateur, etc.

La base de données est READ_ONLY et l'utilisateur en question a déjà utilisé cette base de données et ne dispose que d'autorisations de lecture de base de données, il n'y a donc aucune chance que les paramètres soient altérés.

Hier, j'ai ajouté quelques fonctions et j'ai dû définir SINGLE_USER et READ_WRITE, mais j'ai vérifié trois fois que la base de données a été redéfinie sur MULTI_USER. Je ne peux pas décider si c'est une coïncidence ou une causalité. De toute façon, je suis dans une impasse.

Voici le rapport d'erreur:

The database [dbName] is not accessible. (Object Explorer)

----------------------------------------
Program Location: 

    at Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.DatabaseNavigableItem.get_CanGetChildren()
    at Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItem.RequestChildren(IGetChildrenRequest Request)
    at Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.ExplorerHierarchyNode.BuildChildren(WaitHandle quitEvent)

Une expérience avec ce genre d'erreur?

6
Davenport

En règle générale, cela se produit lorsque la base de données par défaut de l'utilisateur est définie sur une base de données dans laquelle il n'a pas d'autorisations ou est hors ligne.

Par exemple, disons que je vous ai configuré une connexion dans la base de données des ventes, puis je clique avec le bouton droit sur votre connexion dans SSMS et changez votre base de données par défaut en master - mais vous n'avez aucune autorisation dans Master. Lorsque vous essayez de vous connecter, même si vous voulez la base de données Sales, vous accédez par défaut à Master et obtenez cette erreur.

Cela peut également se produire si quelqu'un retire vos autorisations dans Sales et ne change pas votre base de données par défaut en quelque chose d'autre.

C'est pourquoi j'aime définir TempDB sur toutes les bases de données par défaut de tous les utilisateurs. Les bases de données utilisateur peuvent aller et venir, mais TempDB sera toujours là. De plus, si quelqu'un crée accidentellement un objet, au moins il se trouve dans une base de données jetable au lieu de quelque chose comme Master ou Sales.

8
Brent Ozar

J'obtenais cette erreur pour certains utilisateurs. Nous avons essayé beaucoup de choses. Enfin, je viens de supprimer et de rajouter l'utilisateur, puis ils ont pu voir les bases de données.

1
Wayne