创建角色,登录名,用户,视图。提供给第三方指定视图的访问权限。
```sql
---------------------------------------------创建视图----------------------------------------------
if exists (select * from sysobjects where name = 'OA_MATERIAL')
drop view OA_MATERIAL
go
--创建视图
create view OA_MATERIAL
as
select * from T_BD_MATERIAL
go
--使用视图--
select *from OA_MATERIAL
-- 查看视图创建语句--
sp_helptext 'OA_MATERIAL'
----------------------------------------------SqlServer 创建用户给用户查看视图的权限-----------------------------------------------
--给当前数据库创建角色;
exec sp_addrole 'db_oaview' --创建了一个数据库角色,名称为:[db_oaview] db_oaview是角色名称
--给角色名授权访问的视图;
GRANT SELECT ON OA_MATERIAL TO db_oaview
--给角色取消授权;
REVOKE SELECT ON OA_MATERIAL TO db_oaview
--给角色禁止权限;可以配合最后的查询查询观察,执行后会新增 PROTECTYPE = DENY的行,可以先赋予全部查询权限,再用deny否定这个权限,否定后可以再用grant重新给予权限。
DENY SELECT, INSERT, UPDATE, DELETE ON dbo.T_BD_MATERIAL TO db_oaview
--添加登录名,并指定默认数据中心
exec sp_addlogin 'OA','XXXX','XXXX' --exec sp_addlogin '登录名','登录密码','数据库名称'
--设置用户名 = 登录名 添加角色db_oaview到用户
exec sp_adduser 'OA','OA','db_oaview' --exec sp_adduser '登录名','用户名','角色'
-- 给用户添加 查询角色db_datareader,默认可以查询系统所有表
EXEC sp_addrolemember 'db_datareader', 'OA'
-- 移除用户 角色
EXEC sp_droprolemember 'db_datareader', 'OA'
-- c查询用户拥有的所有角色
EXEC sp_helpuser 'OA';
-- 查询所有grant的权限,deny的好像没反应
select c.name as 用户名,b.name as 对象名,
CASE b.type
WHEN 'U' THEN 'Table'
WHEN 'P' THEN 'Procedure'
ELSE 'OTHER'
END AS 对象类型,
CASE WHEN a.ACTION = 26 AND a.PROTECTTYPE = 205 THEN '√' ELSE '' END AS 'REFERENCES',
CASE WHEN a.ACTION = 193 AND a.PROTECTTYPE = 205 THEN '√' ELSE '' END AS 'SELECT',
CASE WHEN a.ACTION = 195 AND a.PROTECTTYPE = 205 THEN '√' ELSE '' END AS 'INSERT',
CASE WHEN a.ACTION = 197 AND a.PROTECTTYPE = 205 THEN '√' ELSE '' END AS 'UPDATE',
CASE WHEN a.ACTION = 196 AND a.PROTECTTYPE = 205 THEN '√' ELSE '' END AS 'DELETE',
CASE WHEN a.ACTION = 224 AND a.PROTECTTYPE = 205 THEN '√' ELSE '' END AS 'EXECUTE',
CASE a.PROTECTTYPE
WHEN 204 THEN 'GRANT_W_GRANT'
WHEN 205 THEN 'GRANT'
WHEN 206 THEN 'DENY'
ELSE 'OTHER'
END AS PROTECTTYPE
from sysprotects a inner join sysobjects b on a.id = b.id
inner join sysusers c on a.uid = c.uid
创建角色,登录名,用户,视图。提供给第三方指定视图的访问权限。
```sql---------------------------------------------创建视图----------------------------------------------if exists (select * f...
点击下载文档
本文2024-09-16 17:18:39发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-14879.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章