Sql Server with Service Broker


我现在正在使用 SqlDependency 来获取当数据表发生更改时的消息通知。


 private void subscribeBroker()
{
    using (var conn = new SqlConnection(connString))
    {
        conn.Open();

        var cmd = new SqlCommand("SELECT text FROM dbo.Test");
        cmd.Connection = conn;

        var dependency = new SqlDependency(cmd);
        dependency.OnChange += dependency_OnChange;
        SqlDependency.Start(connString);

        cmd.ExecuteNonQuery();
    }
}

void dependency_OnChange(object sender, SqlNotificationEventArgs e)
{
    //Do something...
    subscribeBroker();
}

上面代码能够运行,但是有点小问题,
我不能找到一个方法能够使程序知道这个更改是发送在数据表的哪行数据,所以现在我必须读取全部的数据,然后进行比较。有办法直接在通知里面就获取到时哪行数据发生更改了吗,或者有没有别的方法来实现更改通知啊?

sql-server

人生Maker 9 years, 10 months ago

http://stackoverflow.com/questions/3364148/sql-server-database-change-listener-c-sharp

SqlDependency 无法获取change详情 想获取修改详情只能根据更新的sql语句在程序里触发事件并传入change data

刹那F清英 answered 9 years, 10 months ago

Your Answer