我有一个激活SP,它调用另一个调用其他SP的SP来插入和更新TempDB中存在的表。我已经使用具有SA权限的用户创建了队列,并且激活SP具有SA权限(尝试解决问题)。
我继续收到此错误: 对象'xxxxxxxx',数据库'tempdb',架构'dbo'上的SELECT权限被拒绝。
我可以在没有Service Broker的情况下执行该过程(调用SP Service Broker正在调用,只是直接调用)并且它可以正常工作。
有人有什么想法吗?
谢谢
答案 0 :(得分:0)
我不记得我的头脑究竟是怎么回事,但激活程序的执行上下文很奇怪。设置跟踪(或扩展事件)并查看谁在调用您的过程。我的猜测是你会感到惊讶。您可以在过程中抛出“execute as”子句,进入某些模块签名,或者向过程执行者授予权限。
答案 1 :(得分:0)
更新旧问题...... Roji Thomas @Microsoft为我提供了答案以及是什么导致我让它工作。 本文介绍了该问题: http://www.databasejournal.com/features/mssql/article.php/3800181/Security-Context-of-Service-Broker-Internal-Activation.htm