2011-09-27 53 views
1

我正在創建一個SQL Server 2008數據庫表的審計用戶操作的過程。防止更新,刪除和截斷數據庫表

是否可以創建一個只能插入到的數據庫表 - 不允許截斷,刪除或更新表中的數據。我知道的一個選擇是使用具有有限權限的不同用戶,但這不是我的選擇。那麼看看其他選項?

+2

如果權限有限的用戶是不是一種選擇,那麼推斷你的用戶擁有無限的權利是合乎邏輯的。在這種情況下,你不能做任何事情,因爲用戶將能夠撤銷你的任何技巧,刪除你的triggres,撤銷你的權限等等。否則,你可能想用權限詳細說明你的情況。 – GSerg

回答

3

您需要創建在UPDATE觸發了觸發器和DELETE,並拋出一個錯誤:

CREATE TRIGGER user_action_update on UserActions FOR UPDATE, DELETE AS 
    BEGIN 
     RAISERROR ('Cannot modify or delete user actions', 16, 1) 
     ROLLBACK TRAN 
     RETURN 
    END 
GO 

來源:http://msdn.microsoft.com/en-us/magazine/cc164047.aspx

1

另一種方式來做到這一點是寫一個觸發器創建腳本表並將動作設置爲「INSTEAD OF」,這將覆蓋其他代碼或空代碼的觸發動作(在您的情況下不需要的動作)。

物業 INSTEAD OF指定DML觸發器而不是觸發SQL語句,因此,其優先級高於觸發語句的操作。

這裏是如何寫的觸發器創建的SQL語句的鏈接:

http://technet.microsoft.com/en-us/library/ms189799.aspx

好運

  • 阿德里安