c# - SQL Server 通知 - 我的 OnChange 不触发

标签 c# sql notifications sqldependency

我想利用 SQL Server 通知在 winforms 应用程序中捕获我的数据库中的插入事件。我正在尝试使用 SQLDependency 对象。 MSDN 文章使这看起来很简单。所以我创建了一个小示例应用程序来试一试。该事件似乎只在我第一次进入我的应用程序时触发(出现 MessageBox)。将数据插入表中不会引发看起来的 OnChange 事件。有人能告诉我我错过了什么吗?谢谢!

 public Main()
    {
        InitializeComponent();
        var check = EnoughPermission();
        SqlDependency.Stop(constr);
        SqlDependency.Start(constr);
        if(connection == null)
        {
            connection = new SqlConnection(constr);
        }
        if(command == null)
        {
            command = new SqlCommand("Select ID, ChatMessage FROM dbo.Chat",connection);
        }
        connection.Open();
        command.Notification = null;
        SqlDependency dependency = new SqlDependency(command);
        dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
        command.ExecuteReader();
    }





    private void dependency_OnChange(object sender, SqlNotificationEventArgs e)
    {
        MessageBox.Show("Change!");
    }

最佳答案

当我在执行查询通知时,我遇到了确切的问题。我检查了所有配置、代码片段,甚至 TCP 设置,但没有任何帮助。然后,我想出了以下在数据库上运行的查询,它解决了我的问题。也许你可以试试。

ALTER AUTHORIZATION ON DATABASE::[Your DB] TO sa;

关于c# - SQL Server 通知 - 我的 OnChange 不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1904468/

相关文章:

android - 是否可以在同一通知中同时使用 InboxStyle 和 BigText

c# - 如何在 c#.net 中返回数据集

java - 异常设计——每一层的自定义异常

c# - 多线程 COMObject 和 UI 线程 (C#)

c# - 循环 SQL 查询的正确方法?

java - 如何像 SQL 中的 ORDER BY 子句一样操作数组?

Mysql:计算特定日期差异匹配时的增加/减少百分比

java - 如何显示 Activity 中的数据库数据?

android - 使用 PendingIntent 传递数据

notifications - 禁用 gulp 通知?