我有一個數據庫,其中所有訪問都由存儲過程控制。 DBA希望避免給用戶直接讀/寫訪問基礎表,我可以理解。因此,所有更新和選擇數據都是通過存儲過程完成的。基本上他創建了一個角色,對數據庫中的所有存儲過程具有EXECUTE權限,併爲用戶提供角色。使用「執行sp_Executesql」時的權限
問題是存儲過程之一動態構建SQl查詢並通過「執行sp_Executesql」執行它。沒有深入細節,查詢是動態構建的,因爲它根據許多用戶輸入參數而顯着變化。有問題的存儲過程只是一個SELECT sql語句,但是我發現只給予存儲過程EXECUTE權限是不夠的。存儲過程中引用的使用「Execute sp_Executesql」的基礎表需要被賦予「datareader」訪問權限,否則存儲過程將失敗。
有關如何解決此問題的任何想法?我真的想限制對錶格的訪問,但僅限於存儲過程,但我需要找到一種解決使用「Execute sp_Executesq」l的存儲過程的方法。謝謝。
您可能會得到更好的avdice serverfault。我的建議 - 與dba交談並解釋情況。與他們合作以獲得正確的權限。 – 2010-09-28 19:58:16