【发布时间】:2015-02-09 05:50:18
【问题描述】:
我设置好了访问数据库
use DbName
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO dbuser
use DbName
GRANT SELECT ON OBJECT::schema.tableName TO dbuser
Use DbName
GRANT RECEIVE ON QueryNotificationErrorsQueue TO dbuser
ALTER DATABASE DbName SET TRUSTWORTHY ON
use DbName
alter database DbName SET ENABLE_BROKER
但是当我启动 SqlDependency 时:
bool started = SqlDependency.Start(connectionString);
//started 是假的,然后我得到这个错误
System.Data.dll 中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理 附加信息:在不提供选项值的情况下使用 SqlDependency 时,必须在执行添加到 SqlDependency 实例的命令之前调用 SqlDependency.Start()。
C#代码:
private static bool notificationEnabled = false;
private string connString= "Data Source=(local);Initial Catalog=MyDB;UID=dbuser; PWD=pass;";
public static void EnableNotifications()
{
// prevent for calling twice
if (notificationEnabled)return;
System.Web.Caching.SqlCacheDependencyAdmin.EnableNotifications(connString);
//startResult is false always
bool startResult = SqlDependency.Start(connString);
notificationEnabled = true;
}
【问题讨论】:
-
请显示该调用周围的其他代码。还有任何其他可能使用相同连接字符串的调用。
-
@ScottChamberlain 我在 c# 中添加了我的代码
-
把
SqlDependency.Start和SqlCacheDependencyAdmin.EnableNotifications的调用顺序调换一下问题就解决了吗?