SQLDependency缓存无法正常工作

时间:2013-08-28 06:02:26

标签: asp.net caching sqldependency

我正在尝试在SQLDependency Caching应用程序中使用ASP.NET查询通知。 我跟着these steps to set up 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'.

代码 Global.asax

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

    }

我尝试使用谷歌解决方案,但我无法得到任何帮助。

任何人都可以帮我吗?

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您可以授予用户sysadmin权限 OR

alter架构提供dbo权限。

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

grant alter on schema :: schema_name to  user_name

用户还应具有Notification Service,Queues的权限。 要在Servicequeue上使用“

授予用户”John“的权限
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();

post可能会更有帮助。