Sql-Server
SQL Server:如何防止數據通過暴露的視圖被修改?
我有一個數據庫:
DB 1
在不同的數據庫
DB 2
中,我想創建一堆引用數據的視圖DB 1
。這些視圖會相對複雜,有很多連接、聚合、子查詢等。我不希望使用者
DB 2
能夠修改DB 1
. 即我不希望使用者能夠在視圖上執行 INSERT、UPDATE、DELETE 查詢。這篇博文:http ://sqlhint.com/sqlserver/views/creating-readonly-views
建議我可以使用一個
INSTEAD
子句。我寧願只禁止視圖本身的某些查詢子句,特定使用者除外。這可能嗎?
這是通過視圖和表的安全性來處理的。僅
SELECT
授予視圖和基礎表的權限。如果沒有寫訪問權限,通過視圖的 INSERT、UPDATE 和 DELETE 將失敗。
如果使用者可以通過某個組訪問,並且您希望該組仍然可以訪問但不希望這些特定使用者具有訪問權限,那麼您可以使用
DENY
權限,因為DENY
它優先於GRANT
.