2010-05-04 121 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事件沒有在模式級別作用域,它們的作用域在數據庫級別。