【问题标题】:Service Broker Activation SP and TempDB Object PermissionsService Broker 激活 SP 和 TempDB 对象权限
【发布时间】:2012-11-18 02:54:13
【问题描述】:

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

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

我有能力在没有 Service Broker 的情况下执行该流程(直接调用 SP 的 Service Broker 正在调用)并且它工作正常。

有人有什么想法吗?

谢谢

【问题讨论】:

    标签: sql-server service broker


    【解决方案1】:

    我不记得它到底是怎么回事,但是激活过程的执行上下文很奇怪。设置跟踪(或扩展事件)并查看谁在调用您的过程。我的猜测是你会感到惊讶。您可以在过程中抛出“execute as”子句,进入某些模块签名,或授予过程执行者权限。

    【讨论】:

    • 谢谢。我跑了一个跟踪,仍然看不到问题是什么。在激活 SP 中,我可以创建一个临时表,如 'select 1 as c1 into #a',但我无法对数据库中存在的对象 (tempdb.dbo.Table1) 执行任何操作。
    • 是的,我明白了。在跟踪中,您的激活存储过程的执行上下文是什么登录?该登录将需要对 tempdb 中的对象的权限(通过任何机制)。
    猜你喜欢
    • 2014-05-15
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 2019-04-25
    • 1970-01-01
    相关资源
    最近更新 更多