设置登录账号只有查看Microsoft SQL Server Management Studio左边目录树的权限

 

如果你创建了一个登录账号,希望这个登陆账号通过Microsoft SQL Server Management Studio客户端工具登录到SQL Server时,只有查看左边目录树的权限,那么应该如何设置呢?

 

下面的代码,就可以实现这个功能:

 

1、建立数据库、登录账号、数据库用户,授予权限

--先建立2个数据库,用来做实验
create database wcc
go

create database ggg
go

 

--以下代码都是在sa账户下执行的


--1.建立登录名 ggg
use master
go

if exists(select * from sys.server_principals 
          where name ='ggg')
   drop login ggg
go

create 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
go

if exists(select * from sys.database_principals
          where name = 'ggg')
   drop user ggg
go
 
     
create user ggg for login ggg
go

--这里创建一个表,用来测试权限
if OBJECT_ID('test') is not null
   drop table test
go

create table test
(
	id int,
	v varchar(10)
)

insert into test(id,v)
select 1,'aa' union all
select 2,'bb' union all
select 3,'cc'


/*
4.这里的ggg是数据库用户,
  给这个数据库用户ggg,授予查看数据库wcc中的任何定义信息,
  这个时候,你可以点击wcc数据库左边的加号,展开目录树,
  你可以看到表,视图等等,点击表,你可以看到有很多表

*/
grant view definition on database::wcc to ggg

 


2、接下来,打开客户端工具,输入用户名:ggg 和密码:ggg,进行连接:

 

然后,我们点击左边的目录树,可以查看数据库wcc下面的所有信息:

 

但是如果你点击ggg数据库,由于没有在数据库ggg中建立对应的数据库用户ggg,所以在用登陆账号ggg登录到SQL Server后,会用当前数据库的guest数据库用户,作为登录名的数据库用户,而这个guest没有什么权限,所以导致报错:

 

如果我们尝试进行select查询,由于没有授予数据库用户select 权限,比如:

grant select on test to ggg


所以,下面的代码会报错:

use wcc
go


/*
5.需要特别注意的是,上面的权限只能是让你看看定义,
  你说,我能:select * from 某个表
  
  由于没有:
  grant select on 某个表 to ggg
  
  所以会报没有权限的
*/
select * from test



 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值