it-swarm.com.de

SQL Server 2008: Auf die Datenbank [Datenbankname] kann nicht zugegriffen werden

Ich habe diesen Fehler von einer anderen Person erhalten und mir sind die Ideen ausgegangen. Ich kann problemlos auf diese Datenbank zugreifen, die Datenbank befindet sich im MULTI_USER-Modus, die Person, die den Fehler erhält, ist ein Benutzer usw.

Die Datenbank lautet READ_ONLY, und der betreffende Benutzer hat diese Datenbank zuvor verwendet und verfügt nur über Datenbankleseberechtigungen. Daher besteht keine Möglichkeit, dass Einstellungen manipuliert werden.

Gestern habe ich einige Funktionen hinzugefügt und musste auf SINGLE_USER und READ_WRITE setzen, aber ich habe dreimal überprüft, ob die Datenbank wieder auf MULTI_USER gesetzt wurde. Ich kann mich nicht entscheiden, ob das Zufall oder Kausalität ist. In jedem Fall bin ich in einer Sackgasse.

Hier ist der Fehlerbericht:

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)

Irgendwelche Erfahrungen mit dieser Art von Fehler?

6
Davenport

Dies wird normalerweise verursacht, wenn die Standarddatenbank des Benutzers auf eine Datenbank festgelegt ist, für die er keine Berechtigungen hat, oder wenn sie offline ist.

Angenommen, ich habe eine Anmeldung in der Vertriebsdatenbank eingerichtet und dann mit der rechten Maustaste auf Ihre Anmeldung in SSMS geklickt und Ihre Standarddatenbank in Master geändert. Sie haben jedoch keine Berechtigungen in Master. Wenn Sie versuchen, eine Verbindung herzustellen, werden Sie standardmäßig in den Master wechseln und diesen Fehler erhalten, obwohl Sie die Vertriebsdatenbank möchten.

Dies kann auch passieren, wenn jemand Ihre Berechtigungen im Vertrieb wegnimmt und Ihre Standarddatenbank nicht in etwas anderes ändert.

Aus diesem Grund liebe ich es, die Standarddatenbanken aller Benutzer auf TempDB zu setzen. Benutzerdatenbanken können kommen und gehen, aber TempDB wird immer da sein. Wenn jemand versehentlich ein Objekt erstellt, befindet es sich zumindest in einer Wegwerfdatenbank anstelle von Master oder Sales.

8
Brent Ozar

Ich habe diesen Fehler für einige Benutzer erhalten. Wir haben viele Dinge ausprobiert. Schließlich habe ich den Benutzer einfach entfernt und wieder hinzugefügt, und dann konnten sie die Datenbanken sehen.

1
Wayne