我们正在使用混合模式身份验证。我可以看到并查询服务器上除一个数据库之外的所有数据库。我以 SA 帐户登录。当我尝试查看一个数据库时,它不会在 SSMS 中展开,并且出现错误:
“数据库不可访问 (ObjectExplorer)”
当我尝试查看它时。错误日志没有帮助。备份也失败了。
有什么想法吗?它可能已损坏?接下来的步骤是什么才能让它重新上线?
谢谢!!
答案1
如果您以自己身份登录时可以看到数据库,但以 SA 身份登录时看不到,那么这是权限问题。SA 必须被限制访问该数据库。请咨询数据库管理员。如果您是数据库管理员,请以自己的身份登录并检查 SA 的权限。
如果无论谁登录都看不到它,则可能是它已分离或处于离线状态。
此外,最好将其放在 ServerFault.com 上。
再次编辑
这个数据库最近是否从其他服务器恢复?我不敢相信我没有想到这一点,因为这件事上个月才发生在我身上……如果这是从另一台服务器上的备份中恢复的,那么我还有另一个可能的选择……
您和我将登录 SA 视为“SA”,但在本质上,SQL Server 会使用不同的 ID 来查看它。(我认为它是一个 guid)。
有时,我必须从我们的实时服务器备份数据库并将其恢复到我们的测试服务器上。发生这种情况时,任何 SQL Server 登录的权限设置都不正确(但对于 Windows 登录来说权限设置没问题)。例如,我可以查看一个表,该表显示 SA 具有访问权限,但当我尝试使用 SA 进行连接时,我收到了相同的消息。
我们最终发现,我们需要从数据库中删除 SA 用户,然后在服务器级别将其删除,然后使用适当的权限重新设置它。
这是因为 SQL Server 内部使用的“友好”用户名的 ID 存在差异。
例如,在我们的测试服务器上,SA 的 ID 可能是 abc,而在我们的实时服务器上,该 ID 可能是 def。当将数据库从一台服务器还原到另一台服务器时,这会造成混乱。
这里有一篇关于它的文章:http://searchsqlserver.techtarget.com/tip/Restoring-a-database-from-another-SQL-Server
哎呀。您必须注册上面的那个。这个您无需注册。
http://dbaspot.com/sqlserver-server/359100-database-not-accessible-objectexplorer.html
最后一个包含指向知识库的链接,其中显示了比我之前的方法更好的解决方法。这很好。所以即使这不能解决你的问题,你也帮助我找到了更好的答案,所以+1,感谢你提出问题并帮助我。