單一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