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

本文关键字:SqlDependency 不起作用 有效 查询 存在 队列 如果 | 更新日期: 2023-09-27 18:05:35

使用以下代码,我的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.
                    }
                }

我谷歌查询任何可能的约束,但我的查询似乎是好的。深度对象也正确创建,但我试图插入(成功)记录在我的bom表,但我没有收到反馈或事件。在Sql Server 2012中,每次我启动应用程序时都会看到一个新的队列。

我在系统表中查找错误,但似乎一切正常。

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

谢谢!

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

阅读神秘通知、故障处理查询通知故障处理对话框和使用SQL跟踪故障处理查询通知,了解故障处理技巧。

  • 使用分析器,监视查询通知事件类别,查看如何创建和通知QN订阅。
  • 使用分析器,监视Broker Event Category以查看通知是如何传递的,特别是检查是否传递失败。
  • 使用分析器,监视审计代理会话事件类,查看通知传递是否遇到安全问题。

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

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