2011-10-04 70 views

回答

2

Grant EXEC access到單個存儲過程並且沒有對錶的權限。

Grant EXECUTE On [SpName] To [Principal] 

沒有這樣的概念作爲存儲過程的表讀取權限。存儲過程權限與其他對象是分開的。如果用戶有權運行存儲過程,即使他們沒有對基礎對象的權限,他們也可以運行它。

+0

如何授予存儲過程對錶的讀取權限? – GordyII

+0

沒有這樣的概念。如果用戶對存儲過程具有EXEC權限,則即使用戶對基礎對象沒有權限,用戶也可以運行它,而不管它做什麼。存儲過程的權限和對其他對象的權限是完全獨立的。 – mellamokb

+0

如果存儲過程位於與表不同的數據庫中,它是否以相同的方式工作? – GordyII

1

以下文章詳細介紹了使用存儲過程授予權限的幾種不同方法。這絕對值得一讀。

http://www.sommarskog.se/grantperm.html

大多數時候,ownership chaining將採取的權限問題護理。只要存儲過程和基礎表具有相同的所有者,用戶只需要對存儲過程的權限EXECUTE

在對another answer的評論中,您提到存儲過程與表中的數據庫不同。您可能會將module signing視爲僅允許通過存儲過程訪問的方法。如果可能,另一種方法是在與表相同的數據庫中創建存儲過程,然後將訪問權授予其他數據庫中的用戶。這樣,所有權鏈接將生效。

相關問題