我在数据库上新建了一个登陆账户,但在SSMS中连接数据库实例时,却报:拒绝对对象'configurations'(数据库msqlsystemresource',架构'sys')的select权限没有,我已经执行下面的语句了、
GRANT SELECT ON sys.configurations TO public;
GO但还是存在这个问题,新建查询窗口,然后在窗口内连接数据库实例,是可以的。但直接连就不行,当然给这个登陆账户sysadmin服务器角色可以正常连接了,但我需要的是普通登陆账户也可以通过SSMS连接,左侧可以看到数据库资源管理器的各个对象
网上查了查,说是SQL目录树没有权限查看或者什么配置文件类,但都没说怎么解决大家帮帮忙,看怎么解决呢谢谢Resource 数据库库的问题
GRANT SELECT ON sys.configurations TO public;
GO但还是存在这个问题,新建查询窗口,然后在窗口内连接数据库实例,是可以的。但直接连就不行,当然给这个登陆账户sysadmin服务器角色可以正常连接了,但我需要的是普通登陆账户也可以通过SSMS连接,左侧可以看到数据库资源管理器的各个对象
网上查了查,说是SQL目录树没有权限查看或者什么配置文件类,但都没说怎么解决大家帮帮忙,看怎么解决呢谢谢Resource 数据库库的问题
参考 http://msdn.microsoft.com/zh-cn/library/ms190940(v=sql.105).aspx
看看这个:--1.建立登录名 ggg
use master
goif exists(select * from sys.server_principals
where name ='ggg')
drop login ggg
gocreate login ggg
with password = 'ggg',
default_database = [master],
check_expiration = off,
check_policy = off
go
/*
2.注意这里的ggg是登录名,授予服务器级别的查看定义权限
这样,你用ggg登录后,可以看到左边的目录树,
但是当你点击任意用户数据库,比如下面的 wcc数据库,
就会报错!
*/
grant view any definition to ggg/*
3.上面的登录名,那么如果你要查看某个数据库下面的目录树,
那么必须要创建挂到这个登录名上的,数据库用户名,
这里是数据库用户 ggg
*/
use wcc
goif exists(select * from sys.database_principals
where name = 'ggg')
drop user ggg
go
create user ggg for login ggg
/*
4.这里的ggg是数据库用户,
给这个数据库用户ggg,授予查看数据库wcc中的任何定义信息,
这个时候,你可以点击wcc数据库左边的加号,展开目录树,
你可以看到表,视图等等,点击表,你可以看到有很多表*/
grant view definition on database::wcc to ggg
/*
5.需要特别注意的是,上面的权限只能是让你看看定义,
你说,我能:select * from 某个表
由于没有:
grant select on 某个表 to ggg
所以会报没有权限的
*/
use master
goif exists(select * from sys.server_principals
where name ='你的登录名')
drop login 你的登录名
gocreate login 你的登录名
with password = '你的登录名',
default_database = [master],
check_expiration = off,
check_policy = off
go
/*
3.上面的登录名,那么如果你要查看某个数据库下面的目录树,
那么必须要创建挂到这个登录名上的,数据库用户名,
这里是数据库用户 ggg
*/
use 你希望登录名能查看定义的数据库
goif exists(select * from sys.database_principals
where name = '数据库用户名一般同登录名')
drop user 数据库用户名一般同登录名
go
create user 数据库用户名一般同登录名 for login 你的登录名
/*
4.这里的ggg是数据库用户,
给这个数据库用户ggg,授予查看数据库wcc中的任何定义信息,
这个时候,你可以点击wcc数据库左边的加号,展开目录树,
你可以看到表,视图等等,点击表,你可以看到有很多表*/
grant view definition on database::你希望登录名能查看定义的数据库 to 数据库用户名
/*
5.需要特别注意的是,上面的权限只能是让你看看定义,
你说,我能:select * from 某个表
由于没有:
grant select on 某个表 to ggg
所以会报没有权限的
*/