2012-11-30 84 views
1

有沒有一種方法來拒絕一組表的刪除權限,對於sql server 2008中的特定用戶.i希望用戶不能從數據庫的某些表中刪除數據,不想使用特定的觸發器桌子因爲我有90桌子?我們可以拒絕從特定表中刪除嗎?

+0

檢查在這裏:http://stackoverflow.com/questions/2988741/how-to-give-over-right-table-permission-in-sql-server-2008 – psur

回答

4

絕對!

DENY DELETE ON (YourTableNameHere) TO YourUserNameHere 

查看the wonderful and extensive MSDN Books Online docs瞭解更多詳情!

如果你想否認數據庫中的所有表DELETE許可,您可以使用:

DENY DELETE TO YourUserNameHere 

或者,如果你在這樣一種方式,在表中進行分組結構化數據庫schematas,那麼你也可以拒絕來自特定模式的用戶。

如果您沒有將您的90個表格分組到一個單獨的模式(或兩個,三個schematas)中,那麼不容易,神奇的方式一次將權限應用到90個表格。根據DENY聲明,它可以是所有表,特定模式或特定數據庫對象(如表格)。

更新:你總是可以使用系統目錄視圖爲您生成這些DENY語句,然後使用那些你需要:

SELECT 
    'DENY DELETE ON ' + t.NAME + ' TO (youruser)' 
FROM sys.tables t 

這將產生作爲其輸出(例如SQL Server中Management Studio)聲明的列表,以拒絕來自用戶的DELETE許可。將這些行復制到文本編輯器中,並刪除那些不需要的行 - 並在那裏顯示一長串DENY語句!

+0

這將是1表,我有更多然後90表 –

+0

@puneet:那麼你需要90'DENY'語句... –

+0

亞,但我想任何其他方式這樣做,不寫90語句爲1數據庫,然後爲其他數據庫等...... –

相關問題