C# SQL Server通知-我的OnChange未启动
我想利用SQL Server通知在winforms应用程序中捕获数据库中的插入事件。我正在尝试使用SQLDependency对象。MSDN的文章让这看起来很直截了当。所以我创建了一个小的示例应用程序来尝试一下。事件似乎仅在我第一次进入应用程序时触发(MessageBox出现)。向表中插入数据不会引发看起来像是OnChange事件。有人能告诉我我错过了什么吗?谢谢C# SQL Server通知-我的OnChange未启动,c#,sql,notifications,sqldependency,C#,Sql,Notifications,Sqldependency,我想利用SQL Server通知在winforms应用程序中捕获数据库中的插入事件。我正在尝试使用SQLDependency对象。MSDN的文章让这看起来很直截了当。所以我创建了一个小的示例应用程序来尝试一下。事件似乎仅在我第一次进入应用程序时触发(MessageBox出现)。向表中插入数据不会引发看起来像是OnChange事件。有人能告诉我我错过了什么吗?谢谢 public Main() { InitializeComponent(); var che
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!");
}
您的第一个通知是您将收到的唯一通知。查询通知不是更改订阅,一旦触发通知,它也将失效。您应该重新提交一个新的通知订阅 如果您的查询立即收到通知,则表示您没有收到更改通知,而是收到无效查询通知。检查收到的SqlNotificationEventArgs参数的值。检查待插入/更新/删除、待数据、待更改
请看一看该示例,以便更好地了解在收到通知时应该如何重新订阅。要更好地了解查询通知是如何工作的,请参阅。当我在执行查询通知时,我遇到了确切的问题。我检查了所有的配置、代码片段,甚至TCP设置,但没有任何帮助。然后,我想出了以下在数据库上运行的查询,它解决了我的问题。也许你可以试试
ALTER AUTHORIZATION ON DATABASE::[Your DB] TO sa;
你在哪里插入数据?SELECT语句不是INSERT。我正在查询分析器中插入数据。。插入时的良好调用不是SELECT:)SELECT需要向数据库表示您正在监视哪些数据以获取通知。请注意,我正在将该SELECT交给SQLDENCY obj。因此,我的SELECT无效?info属性具有“无效”。谢谢,我会看看你发送的这些链接!SELECt本身在我看来是有效的,但还有更多的标准。看,这对我也有帮助。但是我想了解这个查询做了什么。
提议的新数据库所有者已经是一个用户或在数据库中有别名。