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

gre*_*reg 13 sql sql-server sql-server-2008

我有一个关于使用SQL Server 2008 R2的问题.

我最近遇到了计算机问题,因此我不得不重新启动Windows,并且必须将一个用户的权限授予另一个用户(使用属性中的安全功能).最初提供权限时,通过"拒绝访问"消息.

经过大量研究后,它停止产生此错误(我需要授予权限的用户也无法使用),这会导致另一个问题发生,但这次是在SQL Server中.它产生这个信息;

无法访问数据库[dbName].(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
Run Code Online (Sandbox Code Playgroud)

使用我创建的脚本(幸运的是在此问题发生之前)它通过大量的消息;

消息15151,级别16,状态1,行1
找不到用户'DBName\MyName',因为它不存在或您没有权限.
Msg 262,Level 14,State 1,Line 2
CREATE DATABASE权限在数据库'master'中被拒绝.
消息5011,级别14,状态9,行1
用户无权更改数据库'DBName',数据库不存在,或者数据库未处于允许访问检查的状态.
Msg 5069,Level 16,State 1,Line 1 ......

在这一系列错误之后,我已经变得不稳定,因此如果有人能就我能解决这个问题的方法给我一些反馈,我将不胜感激.干杯.

小智 5

使用 sa 登录并展开“安全”>“登录”,右键单击用户名,然后单击“属性”,单击“用户映射”并选择您希望用户访问的数据库,然后单击“确定”


Ben*_*Ben 3

一般来说,直接向登录授予权限是一个坏主意。您应该在数据库中创建角色对象,并将数据库中的所有权限分配给角色。

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