2013-07-05 84 views
1

我有一個由20位用戶使用的數據庫(SQL Server),這是同一安全角色的所有成員。該角色使他們能夠插入,刪除和更新到Table1,但他們對Table2沒有權限。SQL Server中的觸發器和存儲過程安全性

Table1有一個觸發器觸發一個存儲過程Table2_Refresh,它截斷Table2並從Table1重新構建它。

我在某些地方看過觸發器和存儲過程自動執行的調用者,因此使用調用者的權限。然而20個用戶中的19個能夠更新Table1,觸發器和SP執行得很好。一位用戶得到一個錯誤,告訴他無法找到Table2。

我知道我可以在SQL中放置一個'EXECUTE AS'行,但這種情況發生在多個地方,看起來像是用戶的問題,所以我想盡可能在​​那裏解決它。由於角色成員和權限是相同的,所以兩個用戶會遇到與數據庫不同的行爲還有其他原因嗎?

回答

1

的角色和權限是顯然不相同......

難道他們以同樣的方式記錄(例如,是它們都使用集成安全性)?

0

我建議檢查該特殊登錄使用的數據庫用戶的默認模式。 如果表模式爲dba,但數據庫用戶的默認模式爲dbo,則查詢表時未指定模式將會失敗。