首页 > 代码库 > Security2: 架构和权限
Security2: 架构和权限
架构(Schema)是数据库对象(比如,Table,View,存储过程等)的容器,授予用户对Schema访问的权限,就是授予用户对Schema下所有object的访问权限。
一,架构(Schema)是数据库对象的容器
1,创建架构,指定数据库主体(database-level principal)为该架构的Owner
CREATE SCHEMAschema_nameAUTHORIZATION owner_name
2,改变数据库对象的架构名
执行alter schema命令只能在同一个数据库中转移数据库对象的schema,跟该表相关的权限配置都将被移除。
alter schema hr transfer object::dbo.usres
二,授予用户访问Schema的权限
1,将Schema作为安全对象(Securable),授予用户访问Schema的权限
一旦用户能够访问Schema,就能访问架构(Schema)容纳的所有数据库对象。
GRANT permission [ ,...n ] ON SCHEMA :: schema_nameTO database_principal [ ,...n ][ WITH GRANT OPTION ]
2,示例,授予用户或角色访问Schema的权限
GRANT INSERT ON SCHEMA :: HumanResources TO guest;GRANT SELECT ON SCHEMA :: Person TO WilJo WITH GRANT OPTION;
三,真实经历
项目经理(PM)要求给某一个User 授予一个只读的权限,避免其对数据进行修改,影响数据库的数据,但是仅仅授予只读的权限不行,因为这个User还要执行一些查询,查询语句中包括临时表,表变量,变量,自定义数据类型等,所以,必须授予其Select 和 Execute的权限。
--Create Logincreate login [domain\login_xxx]from windowswith default_database=[HR_DataWarehouse];--Create Usercreate user [domain\login_xxx]from login [domain\login_xxx]with default_schema=dbo;--Create rolecreate role DBReaderExecute_NoModifyAUTHORIZATION [domain\login_xxx];--Add member to rolealter role DBReaderExecute_NoModifyadd member [domain\login_xxx];--Grant Permissiongrant EXECUTE,SELECT on schema::dbo to DBReaderExecute_NoModify; grant EXECUTE,SELECT on schema::hr to DBReaderExecute_NoModify;
参考文档:
CREATE SCHEMA (Transact-SQL)
ALTER SCHEMA (Transact-SQL)
GRANT Schema Permissions (Transact-SQL)
Security2: 架构和权限
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。