Sqldependency Permission问题

时间:2015-07-10 19:51:10

标签: sql sqldependency query-notifications

我在查看sqldependency时遇到以下错误

  

无法找到指定的用户'所有者'。找不到队列   ' SqlQueryNotificationService-dfb11997-c69e-4e3b-a640-29cdf4c3e9fa&#39 ;,   因为它不存在或您没有权限。无效   对象名称   ' SqlQueryNotificationService-dfb11997-c69e-4e3b-a640-29cdf4c3e9fa'

我已经授予了以下权限。不确定赋予sql角色/用户的其他权限。感谢您的时间和帮助

GRANT CREATE PROCEDURE to [SqlUser] 
GRANT CREATE QUEUE to [SqlUser]
GRANT CREATE SERVICE to [SqlUser]
GRANT REFERENCES on 
CONTRACT::[http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification]
 to [SqlUser] 
GRANT VIEW DEFINITION TO [SqlUser] 
GRANT SELECT to [SqlUser] 
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO [SqlUser] 
GRANT RECEIVE ON QueryNotificationErrorsQueue TO [SqlUser]
GRANT ALTER ON SCHEMA::dbo TO [SqlUser]
GRANT CONTROL ON SCHEMA::[dbo] TO [SqlUser]; 
GRANT IMPERSONATE ON USER::DBO TO [SqlUser];
ALTER USER [sqluser] WITH DEFAULT_SCHEMA=[SqlUser]
GO

2 个答案:

答案 0 :(得分:0)

我猜测架构readRDS()不存在。

  1. 如果您使用以下(通常不应该使用)

    [SqlUser]

    然后你不需要:

    GRANT ALTER ON SCHEMA::dbo TO [SqlUser]
    GRANT CONTROL ON SCHEMA::[dbo] TO [SqlUser]; 
    GRANT IMPERSONATE ON USER::DBO TO [SqlUser];
    

    因为您应该将默认架构保留为ALTER USER [sqluser] WITH DEFAULT_SCHEMA=[SqlUser] ,以便仍然可以在该架构下创建队列。

  2. 否则,您不需要dbo上的拨款,您可以使用:

    dbo
  3. 仍然需要所有其他拨款:

    CREATE SCHEMA [SqlUser] AUTHORIZATION [SqlUser]
    ALTER USER [SqlUser] WITH DEFAULT_SCHEMA = [SqlUser]
    

答案 1 :(得分:0)

对于试图找到解决此问题的人: 我将首先检查SqlUser是否是您用来连接应用程序的帐户?

如果是,那么其他可能的原因可能是用户没有对激活的proc的所有者拥有IMPERSONATE权限,并且您需要授予所有者权限。

以下是answer 的详细信息。