使用以下代码,不会引发我的OnChange事件:
SqlDependency.Start(connectionString);
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
using (SqlCommand command = new SqlCommand(
"SELECT Name, Description FROM dbo.Boms",
conn))
{
SqlDependency dep = new SqlDependency(command);
dep.OnChange += dep_OnChange;
// Execute the command.
using (SqlDataReader reader = command.ExecuteReader())
{
// Process the DataReader.
}
}
我用Google搜索了查询的任何可能约束,但我的查询似乎没问题。 dep对象也正确创建,但我尝试在我的Boms表中插入(成功)一条记录但我没有收到任何反馈或事件。 在Sql Server 2012中,每次启动应用程序时都会看到一个新队列。
我在系统表中查找了错误,但一切似乎都没问题。
任何提示至少要了解问题在哪里?
谢谢!
答案 0 :(得分:1)
阅读The Mysterious Notification,Troubleshooting Query Notifications Troubleshooting Dialogs和Using SQL Trace to Troubleshoot Query Notifications以获取问题排查提示。
运行此命令以确保执行沙箱上下文不会遇到孤立的dbo sid问题:
ALTER AUTHORIZATION ON database::[<yourdbname>] TO [sa];