我正在开发一个连接到SQL Server 2008 R2数据库的ASP.NET MVC3 Web应用程序。
一切工作正常,直到我开始得到这个错误:
The database myDb is not accessible. (ObjectExplorer)
当我尝试在SQL Server Management Studio中浏览数据库时,也会出现此问题。 看来我不知何故失去了访问我的数据库的权限? 我可以浏览其他数据库就好了。
我正在使用混合模式身份validation(直到现在Windows身份validation一直工作正常)。 如果我login为sa我得到相同的错误。
如果我无法访问数据库,如何将所需的权限返回给我的用户帐户?
什么样的事情可能导致这首先发生?
我最近做出的唯一改变根本不是数据库相关的,我正在努力弄清楚造成这种情况的原因。
更新那么,重新启动我的电脑后,它都开始工作了:/我没有改变任何东西,还没有读过这里的答复。 很奇怪!
在过去,我发现这是由于数据库所有者正在调用,就像从SQL实例中删除一样。
从查询窗口试试这个:
use <database with issue>; exec sp_changedbowner 'sa';
然后它应该允许你浏览SSMS浏览器中的数据库。
如果您没有使用混合模式身份validation,请使用域帐户(最好是具有SA权限的服务帐户)将“sa”分出来。
更新那么,重新启动我的电脑后,它都开始工作了:/我没有改变任何东西,还没有读过这里的答复。 很奇怪!
看起来像一个非常通用的错误消息。 尝试从Windowsauthentication的用户运行下面,看看你是否得到任何结果。
EXEC sp_change_users_login 'report'
如果是,那么运行下面。
EXEC sp_change_users_login 'auto_fix', 'username_from_above'
如果这没有帮助,我们将尝试挖掘别的东西。
被接受的答案是说重启后所有这些都开始工作,但是为什么呢?
在我尝试使用SSDT(Visual Studio插件)更新数据库之后,发生了这种情况,脚本失败并出现错误。 我甚至无法从SSMS(Management Studio)访问数据库。 我的数据库条目显示“(单用户)”旁边,这是一个线索的问题。
该脚本已将数据库设置为SINGLE_USER模式,并在将其设置回MULTI_USER之前突然终止。 之后,数据库查看SSDT用户仍处于活动状态,不允许任何其他连接。 重新启动清除连接(循环SQL Server服务可能也会这样做),让我重新连接。
从那里,我可以使用数据库属性(选项 – >状态 – >限制访问)将数据库恢复到MULTI_USER模式,但是相反,我从运行完成的不同源分支运行SSDT,重置模式。