我们有一个SQL Server 2012数据库,其中包含“标准”和“管理员”用户。
标准用户拥有自己的架构。管理员用户可以在dbo架构中创建对象。
我想阻止标准用户在dbo模式下创建对象 - 并强制他们在自己的模式下创建对象。但是,标准用户还需要访问dbo模式中已有的对象 - 但不应更改或删除它们。
有没有一种简单的方法可以按照以下方式执行此操作:
DENY CREATE TABLE on SCHEMA::dbo
DENY CREATE VIEW on SCHEMA::dbo
DENY CREATE PROCEDURE on SCHEMA::dbo
感谢您指出我正确的方向。
答案 0 :(得分:0)
我刚刚对CREATE TABLE
和CREATE PROCEDURE
进行了抽查,但我怀疑所有对象的行为都是这样的:
需要数据库中的CREATE TABLE权限和 ALTER权限 在架构上 ,其中正在创建表。
(强调我的)。因此,您应该只需输入一个简单的DENY ALTER ON SCHEMA::[dbo] to [some principal here]
来阻止它们创建或删除对象。
更改现有对象比较棘手,因为您不需要拥有架构的任何权限来更改对象。但是,除非他们对(例如)程序有某种改变权限,否则他们默认不会这样做。