SQL Server架构所有者权限

时间:2010-05-04 11:21:26

标签: sql-server tsql

如果我这样做:

CREATE SCHEMA [test] AUTHORIZATION [testuser]

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

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

编辑:“完全控制”是指CRUD表,视图,sprocs等的能力

修改:这是我的完整代码:

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]

由于

2 个答案:

答案 0 :(得分:3)

默认情况下,架构所有者可以

  • 授予架构中任何对象的权限
  • 删除架构(如果它为空)
  • 删除架构中的任何对象

默认情况下,架构所有者不能

  • 在架构中创建对象。 DDL事件的范围不在架构级别,它们的范围限定在数据库级别。

答案 1 :(得分: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