2012-11-29 16 views
0

我有一個激活SP調用另一個SP調用其他SP來插入和更新TempDB中存在的表。我已經爲具有SA權限的用戶創建了隊列,並且激活SP具有SA權限(以嘗試解決問題)。服務代理激活SP和TempDB對象權限

我繼續得到此錯誤: 對象'xxxxxxxx',數據庫'tempdb',架構'dbo'上的SELECT權限被拒絕。

我有能力在沒有Service Broker的情況下執行進程(調用SP Service Broker直接調用),並且工作正常。

任何人有任何想法?

謝謝

回答

0

我不記得了我的頭頂,它究竟是怎麼回事,但激活程序的執行上下文是奇數。設置跟蹤(或擴展事件)並查看誰在調用您的過程。我的猜測是你會感到驚訝。您可以在過程中引入「執行爲」子句,進入某個模塊簽名或授予過程執行程序權限。

+0

謝謝。我跑了一絲,仍然無法看出問題所在。在激活SP中,我可以創建一個臨時表,如'select 1 as c1 into a',但我無法對數據庫中存在的任何對象(tempdb.dbo.Table1)執行任何操作。 – Neo302

+0

是的,我明白。在跟蹤中,激活sproc的執行上下文是什麼登錄名?該登錄將需要權限(通過任何機制)到tempdb中的對象。 –

相關問題