数据库[dbName]无法访问。(ObjectExplorer)

15

我在使用SQL Server 2008 R2时遇到了问题。

最近我的电脑出现了问题,因此我不得不重新启动Windows,并且必须从一个用户授权给另一个用户(使用属性中的安全功能)。但是在最初授予权限时,它会出现“访问被拒绝”的消息。

经过大量研究后,它停止产生这个错误(我需要授予权限的用户不可用),这导致SQL Server内部出现了另一个问题。它会出现以下信息;

The database [dbName] is not accessible. (ObjectExplorer)

当我尝试选择下拉选项以查看SQL Server中数据库的表和存储过程列表时,就会出现此错误。我在以下链接中找到了解释;

http://www.microsoft.com/products/ee/transform.aspx?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1617&EvtSrc=MSSQLServer&EvtID=916

然后我尝试进行如下实施;

 USE msdb;
 GO
 GRANT CONNECT TO [DBName\MyName] ;

 CREATE DATABASE [DBNAME] ON PRIMARY

我使用了一个脚本(幸运的是在这个问题出现之前)通过了许多消息;

Msg 15151,级别16,状态1,第1行
无法找到用户“DBName\MyName”,因为它不存在或您没有权限。
Msg 262,级别14,状态1,第2行
在数据库“master”中拒绝了CREATE DATABASE权限。
Msg 5011,级别14,状态9,第1行
用户无权更改数据库“DBName”,该数据库不存在或数据库不处于允许访问检查的状态。
Msg 5069,级别16,状态1,第1 ...

在这一堆错误之后,我被卡住了,因此如果有人能够给我一些反馈以解决这个问题,我将非常感激。谢谢。


你真的有一个名为“DBName”的域吗? 难道不应该是“ServerName”吗? 否则,“DBName \ MyName”不是有效的登录名,可能也不是有效的数据库用户名。 - RBarryYoung
@RBarryYoung 感谢您的回复,DBName 是我要访问的数据库名称。但由于没有正确命名的实例,它会拒绝我的访问权限。 - greg
4个回答

5

使用sa登录并扩展Security > Login,右键单击用户名,然后选择属性, 点击用户映射并选择您想要用户访问的数据库,然后点击确定。


3

通常直接授予权限给登录用户是个不好的主意。您应该在数据库中创建角色对象,并将所有权限分配给角色。

然后,当将数据库移动到另一台计算机(或重新安装)时,您需要修改的只有服务器登录和角色分配。


基本上,计算机连接到服务器,但我的个人电脑依赖于该服务器。但是当我离开工作时,出现了一个错误,只允许我作为所有者登录,因此我不得不授予所有者权限,以便我能够查看我之前完成的所有内容。另外,在阅读了有关角色分配的文章之后,这就是我所做的(不知道正确术语是什么)。 - greg
@gregory.bmclub,你自己做了SA吗?例如,成为本地管理员组的一部分? - Ben
1
似乎我无法创建SA,因为它显示我没有权限这样做。我也无法创建数据库。 - greg
您需要使用已经在“sysadmin”服务器角色中的用户名登录。这通常包括本地的“Administrators”组,因此通常如果您是本地管理员,则应该没有问题。如果您不是,则需要让其他人代替您执行此操作。 - Ben
@gregory.bmclub 你是否是运行SQL服务器的计算机本地管理员组的成员?这是第一步。 - Ben
显示剩余2条评论

1

看起来您尝试访问的数据库没有管理员权限。关闭SSMS并以管理员身份运行它。


1
一个可能的问题是您有两个数据库实例,因此您必须停用一个实例。如果您在Visual Studio中打开并访问了您的数据库,请关闭连接,然后转到Windows服务并停止和重新启动SQL Server服务(MSSQL),然后转到Management Studio并打开您的数据库,它应该已经打开,您可以从管理工具中浏览表格。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接