DENY CREATE dbo架构的权限

时间:2015-01-14 14:20:19

标签: sql-server tsql sql-server-2012

我们有一个SQL Server 2012数据库,其中包含“标准”和“管理员”用户。

标准用户拥有自己的架构。管理员用户可以在dbo架构中创建对象。

我想阻止标准用户在dbo模式下创建对象 - 并强制他们在自己的模式下创建对象。但是,标准用户还需要访问dbo模式中已有的对象 - 但不应更改或删除它们。

有没有一种简单的方法可以按照以下方式执行此操作:

 DENY CREATE TABLE on SCHEMA::dbo  
 DENY CREATE VIEW on SCHEMA::dbo  
 DENY CREATE PROCEDURE on SCHEMA::dbo  

感谢您指出我正确的方向。

1 个答案:

答案 0 :(得分:0)

我刚刚对CREATE TABLECREATE PROCEDURE进行了抽查,但我怀疑所有对象的行为都是这样的:

  

需要数据库中的CREATE TABLE权限和 ALTER权限    在架构上 ,其中正在创建表。

(强调我的)。因此,您应该只需输入一个简单的DENY ALTER ON SCHEMA::[dbo] to [some principal here]来阻止它们创建或删除对象。

更改现有对象比较棘手,因为您不需要拥有架构的任何权限来更改对象。但是,除非他们对(例如)程序有某种改变权限,否则他们默认不会这样做。