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数据库备份的几种方式
- sqlserver2014怎么重新激活(解决Windows 10家庭版安装SQL Server 2014出现.net 3.5失败问题)
- sqlserver的图形表(SQL Server纵表与横表相互转换的方法)
- sqlserver改表结构不允许(SQL Server阻止保存修改表结构的解决方法)
- sql查询语句casewhen是什么意思(SQL Server中使用判断语句IF ELSE/CASE WHEN 案例)
- sql server2012下载安装教程(SQL Server 2012 安装与启动图文教程)
- sqlserver 存储过程参数类型(详解SQL Server表和索引存储结构)
- SQL Server锁类型
- sqlserver存储过程参数默认值(sql server使用临时存储过程实现使用参数添加文件组脚本复用)
- sqlserver如何设置定时备份(SQL Server使用脚本实现自动备份的思路详解)
- 完整版sqlserver2019卸载教程(Sql Server 2012完全卸载方法 只需8步轻松卸载)
- SQL SERVER中Merge语句的用法
- 查sqlserver锁表语句(Sql Server如何查看被锁的表及解锁的方法)
- sql server事件跟踪器中常用的跟踪事件
- sqlserver定时计划(sql server deadlock跟踪的4种实现方法)
- 黄渤泪目 我的痴呆父亲,我内心永远的痛(黄渤泪目我的痴呆父亲)
- 蒜苔和鱿鱼尾巴一起炒,味道特别棒,又脆又嫩,有滋又有味(蒜苔和鱿鱼尾巴一起炒)
- 鱿鱼炒蒜苔不是黑暗料理,这样做清香扑鼻,鲜美脆嫩,开胃又下饭(鱿鱼炒蒜苔不是黑暗料理)
- 蒜苔炒鱿鱼(蒜苔炒鱿鱼)
- 远离 五毛食品 洛阳80后妈妈发明的 飞行棋 成校园爆款 玩具(远离五毛食品)
- 失传的古代飞行棋游戏 六博(失传的古代飞行棋游戏)
热门推荐
- python udp网络编程(python实现一个简单的udp通信的示例代码)
- php cgi是什么意思(PHP7内核CGI与FastCGI详解)
- dedecms移动端如何设置(dedecms删除系统自定义变量的方法)
- css设置隐藏左右边框(CSS 实现元素较宽不能被完全展示时将其隐藏的方法)
- app云服务器(为什么APP开发首选云服务器?)
- docker添加mq基础镜像(Docker阿里云RocketMQ 4.5.1部署流程详解)
- docker如何查看容器目录(docker 查看容器的挂载目录操作)
- docker下运行python3(使用Docker+jenkins+python3环境搭建超详细教程)
- css3中基本选择符(CSS3 clip-path 用法介绍详解)
- sqlserver怎么显示变量所占字节数(SQL Server中关于基数估计计算预估行数的一些方法探讨)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9