【问题标题】:SQLDependency Caching not workingSQLDependency 缓存不起作用
【发布时间】:2013-08-31 02:03:36
【问题描述】:

我正在尝试在我的ASP.NET 应用程序中将SQLDependency Caching 与查询通知一起使用。 我关注了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());

    }

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

谁能帮我解决这个问题?

我错过了什么吗?

【问题讨论】:

    标签: asp.net caching sqldependency


    【解决方案1】:

    您可以授予用户sysadmin 权限 或

    dbo 架构提供alter 权限。

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

    grant alter on schema :: schema_name to  user_name
    

    用户还应具有通知服务、队列的权限。 要在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 可能会更有帮助。

    【讨论】:

    • 感谢您的帮助!我更改了架构权限并将其设置为我的数据库用户。它成功了!谢谢
    • 我没有更多问题,但我的缓存总是为空,是不是因为我使用的是SqlDataAdapter
    • 很高兴知道它现在正在工作。我还将使用 SqlDataAdapter 进行检查。
    • 感谢您的所有帮助。但我的缓存始终为空。它没有给我任何异常,但始终为空。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 2015-05-27
    • 1970-01-01
    相关资源
    最近更新 更多