0

盯着 sqldependency 时出现以下错误

找不到指定的用户“所有者”。找不到队列“SqlQueryNotificationService-dfb11997-c69e-4e3b-a640-29cdf4c3e9fa”,因为它不存在或者您没有权限。无效的对象名称“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
4

2 回答 2

0

我猜该架构[SqlUser]不存在。

  1. 如果您使用以下内容(通常不应该这样做)

    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]
    

    因为您应该保留默认模式,dbo以便仍然在该模式下创建队列。

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

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

仍然需要所有其他赠款:

    GRANT REFERENCES ON CONTRACT::[http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification] TO [SqlUser];

    -- for Start()
    GRANT CREATE PROCEDURE to [SqlUser];
    GRANT CREATE QUEUE to [SqlUser];
    GRANT CREATE SERVICE to [SqlUser];
    GRANT VIEW DEFINITION TO [SqlUser];

    -- for subscribe
    GRANT SUBSCRIBE QUERY NOTIFICATIONS TO [SqlUser];
    GRANT RECEIVE ON QueryNotificationErrorsQueue TO [SqlUser];
于 2015-07-13T22:44:47.223 回答
0

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

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

这是更详细的答案

于 2017-06-01T20:18:43.263 回答