讓我首先解釋上下文。由於表上的權限,sql存儲過程執行失敗
有兩個數據庫位於同一網絡上的兩臺不同的服務器上。有一個存儲過程將數據從一個數據庫中的表複製到另一個數據庫中的表(兩個數據庫具有相同的結構,但包含不同的數據)。用戶沒有權限直接查詢表(除非他們的角色允許他們這樣做),只能通過存儲過程。
現在的問題。
當存儲過程由用戶執行時,它無法提供錯誤消息,表明插入語句的目標表上的權限不允許用戶訪問它。但是,由於用戶具有執行存儲過程的權限,所以不應妨礙它,應該如此?
摘錄形式MSDN文檔:
「存儲過程採取所有權鏈的優勢,使用戶無需具有訪問數據庫對象的明確許可提供訪問數據的所有權鏈存在訪問對象時例如,存儲過程可以調用其他存儲過程,或者存儲過程可以訪問多個表,如果執行鏈中的所有對象具有相同的所有者,則SQL Server僅檢查EXECUTE權限,而不是調用者對其他對象的權限,因此您只需授予存儲過程的EXECUTE權限;您可以撤消或拒絕對基礎表的所有權限。「
爲什麼執行失敗呢?所有表都有相同的所有者。
是的,這工作!非常感謝。 – tomd 2010-06-23 12:17:22