2010-05-04 78 views
4

,如果我这样做:SQL Server架构所有者权限

CREATE SCHEMA [test] AUTHORIZATION [testuser] 

testuser似乎并没有对架构进行任何权限,这是正确的?我认为是拥有架构的主体,你完全可以控制它吗?

我需要授予testuser哪些权限才能完全控制test模式?

编辑:的 “完全控制” 我的意思的能力CRUD表,视图,存储过程等

编辑:这里是我的全码:

CREATE DATABASE [testdb] 
Go 
USE [testdb] 

CREATE LOGIN [andrewbdesktop\testuser] FROM WINDOWS 
Go 

CREATE USER [andrewbdesktop\testuser] FROM LOGIN [andrewbdesktop\testuser] 
Go 

CREATE SCHEMA [test] 
    AUTHORIZATION [andrewbdesktop\testuser] 
Go 

ALTER USER [andrewbdesktop\testuser] WITH DEFAULT_SCHEMA = [test] 

感谢

回答

1

我相信,通过您的陈述,您可以让该用户成为架构的所有者,因此它应该已经完全控制该架构中的对象。

如果你想要更多的细粒度控制,你可以做这样的语句:

GRANT EXECUTE ON SCHEMA::test TO testuser 
GRANT INSERT ON SCHEMA::test TO testuser 
GRANT SELECT ON SCHEMA::test TO testuser 
GRANT UPDATE ON SCHEMA::test TO testuser 
GRANT DELETE ON SCHEMA::test TO testuser 
+0

这就是我想如果我做'创建表[test]。[newtable](id int)'我得到:'CREATE TABLE权限在数据库'test''中被拒绝 – 2010-05-04 11:40:38

+0

您也必须是有效的用户在数据库中,并且您必须显式不被拒绝访问才能在该模式中创建表。 – 2010-05-04 13:21:54

+0

嗯嗯添加了我的所有代码的问题,这看起来像它会导致我访问被拒绝?谢谢 – 2010-05-05 08:56:01

2

默认模式所有者可以

  • 授予权限的架构内的任何物体
  • 如果模式为空,则删除模式
  • 删除模式中的任何对象

默认模式所有者不能

  • 创建的模式对象。 DDL事件没有在模式级别作用域,它们的作用域在数据库级别。