SQL Server中对列的权限设置
类别:数据库 浏览量:312
时间:2016-6-15 SQL Server中对列的权限设置
SQL Server中对列的权限设置一、方式一:使用视图
将需要限制用户只能看到特定的几个列、设置成一个视图,然后对这个视图进行权限控制
二、方式二:使用GRANT语句
1、授予相关列的查询权限(SELECT)
(1)、在数据库db1中,登录名UserA 只能有权限查询 Employee表 里面的BusinessEntityID, NationalIDNumber, LoginID三个字段权限,不能查询其它字段
GRANT SELECT(BusinessEntityID, NationalIDNumber, LoginID) ON Employee TO UserA
(2)、可以用下面SQL查看授予UserA的权限
SELECT dp.grantee_principal_id ,
P.name AS UName ,
dp.permission_name ,
C.name ,
OBJECT_NAME(O.object_id) AS TabName
FROM sys.database_permissions dp
INNER JOIN sys.objects O ON dp.major_id = O.object_id
INNER JOIN sys.columns C ON C.object_id = O.object_id
AND C.column_id = dp.minor_id
INNER JOIN sys.database_principals P ON P.principal_id = dp.grantee_principal_id and P.name='UserA'
(3)、如果查询语句使用BusinessEntityID, NationalIDNumber, LoginID字段之外的其它字段
SELECT BusinessEntityID, NationalIDNumber, LoginID,JobTitle FROM Employee
报如下错误
Msg 230, Level 14, State 1, Line 8
The SELECT permission was denied on the column 'JobTitle' of the object 'Employee', database 'db1', schema 'dbo'
2、授予相关列的修改权限(Update)
(1)、对于登录名UserB,只允许其修改 Address表 的AddressLine1,AddressLine2两个字段,其它字段不许修改
GRANT UPDATE(AddressLine1,AddressLine2) ON Address TO UserB
(2)、可以用下面SQL查看授予UserB的权限
SELECT dp.grantee_principal_id ,
P.name AS UName ,
dp.permission_name ,
C.name ,
OBJECT_NAME(O.object_id) AS TabName
FROM sys.database_permissions dp
INNER JOIN sys.objects O ON dp.major_id = O.object_id
INNER JOIN sys.columns C ON C.object_id = O.object_id
AND C.column_id = dp.minor_id
INNER JOIN sys.database_principals P ON P.principal_id = dp.grantee_principal_id and P.name='UserB'
标签:SQL Server
您可能感兴趣
- SQL SERVER 数据库外键
- Sql Server系统数据库的作用
- sqlserverlog原理(sql server中错误日志errorlog的深入讲解)
- sqlserver中根据类型分组(SQL SERVER 分组求和sql语句)
- sqlserver 怎么建立触发器(SQL Server:触发器实例详解)
- sqlserver技术文档(sql server2016里面的json功能浅析)
- SQL SERVER中@@TRANCOUNT
- sqlserver分页数据重复(SQL Server 在分页获取数据的同时获取到总记录数)
- sql server代理无法启动服务(SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法)
- sql server 视图操作(Sql Server 视图数据的增删改查教程)
- Sql Server判断函数、存储过程等是否存在
- SQL Server数据库备份的几个建议
- sql server批量导出数据(SQL Server 批量插入数据的完美解决方案)
- SQL Server中找出执行时间过长的作业
- sqlserver使用简介(SQL Server Page结构深入分析)
- sqlserver中根据日期时间获取秒数(sql server编写通用脚本实现获取一年前日期的方法)
- 三兄妹感情再遇波折,人设接连崩塌 《以家人之名》剧情猜不透(三兄妹感情再遇波折)
- 《小敏家》金波想要复婚 这只是他圈套的第1步,更可恶的在后面(小敏家金波想要复婚)
- 小敏家 剧情离谱一锅乱炖,但他们俩绝对是这部剧的一大 亮点(剧情离谱一锅乱炖)
- 《倚天屠龙记》再遭翻拍,关晓彤主演赵敏,蒋劲夫演张无忌,你怎么看(倚天屠龙记再遭翻拍)
- 吴启华与曾舜晞两代张无忌同框,戏里经典的他却没活出原著的潇洒(吴启华与曾舜晞两代张无忌同框)
- 经常发这三种 朋友圈 的人,要迅速屏蔽(经常发这三种朋友圈)
热门推荐
- es的写入操作(详解ES9的新特性之异步遍历Async iteration)
- linux双网卡热备配置超详细(linux 使用bond实现双网卡绑定单个IP的示例代码)
- docker端口访问不了(docker设置了端口映射,不能访问的解决方案)
- php 获取证书列表(用PHP做了一个领取优惠券活动的示例代码)
- vue-websocket 组件教程(Vue+express+Socket实现聊天功能)
- mongodb python教程(python使用pymongo操作mongo的完整步骤)
- thinkphp静态怎么设置(浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法)
- docker推荐单个容器运行(docker容器状态的转换实现)
- sqlserver 数据量需要多少内存(SQL Server在AlwaysOn中使用内存表的“踩坑”记录)
- phpinclude的使用方法(PHP defined函数的使用图文详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9