1

我正在尝试SQLDependency Caching在我的应用程序中使用查询通知ASP.NET。我按照这些步骤设置 SQLDependency Caching。我能够db成功设置。但是,当我运行我的应用程序时,我收到以下错误。

Cannot find the specified user 'owner'.
Cannot find the queue
SqlQueryNotificationService-6c3ae823-a678-4ed2-8b97-561b5f2561ee', 
because it does not exist or you do not have permission.
Invalid object name
SqlQueryNotificationService-6c3ae823-a678-4ed2-8b97-561b5f2561ee'.

全球代码.asax

void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        System.Data.SqlClient.SqlDependency.Start(ConfigurationManager.ConnectionStrings["McdConn"].ToString());

    }

我试图谷歌解决方案,但我无法获得任何帮助。

谁能帮我这个?

我错过了什么吗?

4

1 回答 1

1

您可以授予用户sysadmin权限或

为架构提供alter权限。dbo

为了创建过程、函数、模式范围对象等,您至少需要ALTER目标模式的权限。这是 TSQL 语法,

grant alter on schema :: schema_name to  user_name

用户还应该具有通知服务、队列的权限。要授予用户“John”的权限Servicequeue使用:

GRANT SEND on service::SqlQueryNotificationService to John
GRAND RECEIVE on SqlQueryNotificationService_DefaultQueue to John

此外,用户需要订阅通知的权限。(我猜这已经由你完成了)要做到这一点,请使用:

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO John

到目前为止,我可以猜测的最后一点是,如果您已设置SqlDependency命令,请确保执行它。服务器上的查询订阅仅在命令执行时发生。

SqlDataReader reader = command.ExecuteReader();

这篇文章可能会更有帮助。

于 2013-08-28T07:10:18.297 回答