2010-03-17 105 views
4

如何授予某些用戶刪除權限並僅在由我們的VB.net 2005 Win應用程序訪問的SQL 2005數據庫中創建單個表?t-SQL授予表的刪除權限並創建

一些文章建議授予表的控制權,但我無法做到這一點。如果你認爲這是一條路,你能告訴我正確的語法嗎?

回答

9

你不能指定DROP或單個表CREATE權限,這些都是架構和數據庫級別的權限:

  • DROP TABLE需要到該表所屬,控制權限對錶的模式ALTER權限,或者db_ddladmin固定數據庫角色的成員資格。

  • CREATE TABLE需要database的CREATE TABLE權限和schema其中正在創建該表的權限。

如果用戶對錶的控制權限他們可以放棄它,但你將無法再創建它。還有,你可能需要根據您的需求兩種方法:

  1. 如果你只需要改變表的結構,你應該使用TRUNCATE TABLE語句刪除所有記錄(不記錄),然後使用ALTER TABLE聲明添加/刪除列。

  2. 如果您確實希望用戶能夠刪除並重新創建表,則需要在不同的架構中創建表,併爲該架構分配用戶正確的權限。看到這篇文章約using schemas in MS SQL讓你開始。一旦將該表格置於單獨的模式中,您就可以將新模式的db_ddladmin角色授予用戶,並且他們應該只能創建和刪除該模式中的表格。

1

使用此:

DENY ALTER ON SCHEMA::dbo 

但這並不妨礙給予回到自己的這一權利的用戶。

+1

可能希望用'TO userName'來完成 – 2013-10-10 16:17:55