Service Broker激活SP和TempDB对象权限

时间:2012-11-29 22:22:28

标签: sql-server service broker

我有一个激活SP,它调用另一个调用其他SP的SP来插入和更新TempDB中存在的表。我已经使用具有SA权限的用户创建了队列,并且激活SP具有SA权限(尝试解决问题)。

我继续收到此错误: 对象'xxxxxxxx',数据库'tempdb',架构'dbo'上的SELECT权限被拒绝。

我可以在没有Service Broker的情况下执行该过程(调用SP Service Broker正在调用,只是直接调用)并且它可以正常工作。

有人有什么想法吗?

谢谢

2 个答案:

答案 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