2013-02-20 10 views
2

我想建立一个安全情况,我的数据库用户(“ApplicationUser”)有权在模式中创建,更改和删除视图。我可以授予数据库用户在架构中创建视图的权限吗?

如果我执行语句

GRANT ALTER ON SCHEMA :: MySchema TO ApplicationUser; 

,然后连接到数据库,并执行以下语句:

CREATE VIEW [MySchema].[MyView] AS SELECT * FROM SomeTable 

我得到错误信息

CREATE VIEW permission denied in database 'MyDatabase'. 

是否有可能以我想要的方式配置安全性,还是必须在整个数据库上授予“ALTER”?或者是其他东西?

感谢您的帮助!

回答

5
create schema myschema authorization ApplicationUser 
GO 

grant create view to ApplicationUser 
GO 

要做到这一点,你需要更改的模式,可能有其他后果,或者使用类似数据库DDL触发器的授权。

对于现有的架构做:

alter authorization on schema::myschema to ApplicationUser 

就像我说的,这种方式应谨慎进行。对于其他方式http://msdn.microsoft.com/en-us/library/ms186406(v=sql.105).aspx

+0

这是如何区分模式?说是否操作(或我自己)想要将创建视图权限授予一个模式?您是否授予CREATE VIEW,然后授予架构的额外权限? – 2013-02-20 20:32:32

+0

muhmud,你是说特定模式的CREATE VIEW是不可能的吗?需要更多信息的人。 – 2013-02-20 20:43:07

+0

对不起,以前的简短,请参阅更新的答案。 – muhmud 2013-02-20 21:09:35

相关问题