單一User針對Schema(結構描述)的權限設定

單一User針對Schema(結構描述)的權限設定

今天在Super SQL Server社群中一位朋友詢問了該如何讓一個user只針對

schema(結構描述)具有 full control的權限(insert/update/delete/select/

ddl_admin,bulk insert)。

 

看了他的問題也引起我的好奇心(我也沒設定過),因此就Google一下,在

此先將蒐集到的資料內容筆記一下,語法如下:

/**設定User在該Schema的權限**/

GRANT ALTER, DELETE, EXECUTE, INSERT, REFERENCES, SELECT,
          UPDATE, VIEW DEFINITION ON SCHEMA::myschema TO [User];

/**完成上述設定該User還是無法Create任何Object,因為Object是Database層級。
所以我們只要在Database中給予Create物件權限即可,如下面這一句語法**/
GRANT CREATE TABLE, CREATE PROCEDURE, CREATE FUNCTION, CREATE VIEW TO [User];
 
/**而下面語法是讓該帳號有Bulk Insert的權限**/
USE [master]
GO
GRANT ADMINISTER BULK OPERATIONS TO [login]
GO

 

這裡有幾個地方說明一下

1 . 在Schema的權限設定中有一個Control的權限,基本上只要給User這一個權限最方便

但為何要拉哩拉扎設定一堆權限呢?因為Control的權限很大,可以Drop Schema。但我們

不需要讓User有Drop Schema的權限,因此大家就耐心地逐一給權限吧。

 

2.因為Objects是Database層級。所以我們只要在Database中給予Create物件權限才能讓

User能在Schema內建立Table或View等物件。

 

3 . GRANT ALTER ON SCHEMA後,User在Schema就有Create Drop Alter等ddl的權限。

但前提是得先完成上面第2點的設定。

 

4. Bulk Insert需要 INSERT 和 ADMINISTER BULK OPERATIONS 權限。而ADMINISTER

BULK OPERATIONS權限是屬於Server層級。

 

參考資料來源

GRANT Schema Permissions (Transact-SQL)

BULK INSERT (Transact-SQL)

 

 



                    

我是ROCK

rockchang@mails.fju.edu.tw