我想利用 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/