如果存在队列且查询有效,则SqlDependency不起作用

时间:2014-05-28 08:27:43

标签: c# sql sql-server-2012 sqldependency

使用以下代码,不会引发我的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中,每次启动应用程序时都会看到一个新队列。

我在系统表中查找了错误,但一切似乎都没问题。

任何提示至少要了解问题在哪里?

谢谢!

1 个答案:

答案 0 :(得分:1)

阅读The Mysterious NotificationTroubleshooting Query Notifications Troubleshooting DialogsUsing SQL Trace to Troubleshoot Query Notifications以获取问题排查提示。

运行此命令以确保执行沙箱上下文不会遇到孤立的dbo sid问题:

ALTER AUTHORIZATION ON database::[<yourdbname>] TO [sa];