Tuto chybu jsem dostal od jiné osoby a došly mi nápady. Mám přístup k této databázi bez problémů, databáze je v režimu MULTI_USER, osoba přijímající chybu je uživatel atd.
Databáze je READ_ONLY a dotyčný uživatel již dříve tuto databázi použil a má pouze oprávnění ke čtení databáze, takže není žádná šance, že se s nastaveními bude manipulovat.
Včera jsem přidal několik funkcí a musel jsem nastavit na SINGLE_USER a READ_WRITE, ale trojnásobně jsem zkontroloval, že db byl nastaven zpět na MULTI_USER. Nemohu se rozhodnout, jestli je to náhoda nebo kauzalita. V každém případě jsem na slepé uličce.
Zde je chybová zpráva:
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)
Nějaké zkušenosti s tímto druhem chyby?
Obvykle je to způsobeno, když je výchozí databáze uživatele nastavena na databázi, ve které nemají oprávnění nebo je offline.
Řekněme například, že jsem si nastavil přihlašovací údaje v prodejní databázi, a pak jsem pravým tlačítkem myši na přihlašovací jméno v SSMS a změnil jsem výchozí databázi na master - ale nemáte Master v Master. Když se pokusíte připojit, přestože chcete prodejní databázi, přejdete ve výchozím nastavení do Master a zobrazí se tato chyba.
K tomu může také dojít, pokud někdo odejme vaše oprávnění v prodeji a nezmění vaši výchozí databázi na něco jiného.
Proto ráda nastavuji výchozí databáze všech uživatelů na TempDB. Uživatelské databáze mohou přicházet a odcházet, ale TempDB tam bude vždy. Navíc, pokud někdo náhodou vytvoří objekt, alespoň je to v odložené databázi namísto něčeho, jako je Master nebo Sales.
Tuto chybu jsem dostal pro některé uživatele. Zkusili jsme mnoho věcí. Nakonec jsem právě odstranil a znovu přidal uživatele a pak byli schopni vidět databáze.