我正在尝试在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());
}
我尝试使用谷歌解决方案,但我无法得到任何帮助。
任何人都可以帮我吗?
我错过了什么吗?
答案 0 :(得分:1)
您可以授予用户sysadmin
权限
OR
向alter
架构提供dbo
权限。
为了创建过程,函数,模式作用域对象等,您至少需要ALTER
目标模式的权限。这是TSQL语法,
grant alter on schema :: schema_name to user_name
用户还应具有Notification Service,Queues的权限。
要在Service
和queue
上使用“
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可能会更有帮助。