Jam*_*Orr 2 sql-server sql-server-2008
我想设置一个安全情况,我的数据库用户("ApplicationUser")有权在架构中创建,更改和删除视图.
如果我执行该声明
GRANT ALTER ON SCHEMA :: MySchema TO ApplicationUser;
Run Code Online (Sandbox Code Playgroud)
然后连接到数据库并执行语句:
CREATE VIEW [MySchema].[MyView] AS SELECT * FROM SomeTable
Run Code Online (Sandbox Code Playgroud)
我收到错误消息
CREATE VIEW permission denied in database 'MyDatabase'.
Run Code Online (Sandbox Code Playgroud)
是否可以按照我想要的方式配置安全性,还是必须在整个数据库上授予"ALTER"?或者是其他东西?
谢谢你的帮助!
create schema myschema authorization ApplicationUser
GO
grant create view to ApplicationUser
GO
Run Code Online (Sandbox Code Playgroud)
要做到这一点,您需要更改模式的授权,这可能会产生其他后果,或者使用类似数据库DDL触发器的东西.
对于现有架构,请执行以
alter authorization on schema::myschema to ApplicationUser
Run Code Online (Sandbox Code Playgroud)
就像我说的那样,这种方式应该谨慎行事.对于其他方式http://msdn.microsoft.com/en-us/library/ms186406(v=sql.105).aspx
小智 5
我能够做到这一点...
这是我的语法...
USE [database];
CREATE ROLE [role];
GRANT SELECT TO [role];
GRANT CREATE VIEW TO [role];
GRANT ALTER ON SCHEMA::[schema 1] TO [role];
DENY ALTER ON SCHEMA::[schema 2] TO [role];
--TEST
/*
EXECUTE AS USER = '[user w/role]';
CREATE VIEW [schema 1].test AS (select 'test' as 'test');
DROP VIEW [schema 1].test
CREATE VIEW [schema 2].test AS (SELECT 'test' AS 'test');
DROP VIEW [schema 2].test
REVERT
*/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14696 次 |
| 最近记录: |