SqlDependency notification—执行查询后立即通知失败
本文关键字:通知 失败 查询 notification 执行 SqlDependency | 更新日期: 2023-09-27 18:12:43
我遇到了一个问题,我试图设置SqlDependency通知,以便在sql服务器上的表中的数据更改时接收通知。但是,当我执行用于设置sql依赖项的查询时,立即收到一个通知,表明由于sql语句(SqlNotificationEventArgs shows Info: Invalid, Source: Statement, Type: Subscribe
)的问题,尝试订阅失败
这表明有一个问题与sql查询,但已经尝试了一个非常基本的例子,以确保它不是一个问题与选择语句,我仍然收到这些"无效"通知立即。我还确保我已经启动了SQL Server的服务代理,创建了一个队列和通知服务,并授予所有必要的权限给主体(在这种情况下,我连接到SQL Server的用户)这是我的表格:
CREATE TABLE [dbo].[TableTest](
[id] [int] NOT NULL,
[val1] [int] NULL,
[val2] [int] NULL,
CONSTRAINT [PK_TableTest] PRIMARY KEY CLUSTERED ( [id] ASC )
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
下面是代码:
SqlDependency.Start(connectStr);
_connection = new SqlConnection(connectStr);
_connection.Open();
_sqlCommand = new SqlCommand("Select [id] from TableTest", _connection);
_sqlCommand.Notification = null;
SqlDependency dependency = new SqlDependency(_sqlCommand);
dependency.OnChange += this.OnDataChangeNotification;
DataTable dt = new DataTable();
dt.Load(_sqlCommand.ExecuteReader());
调用'_sqlCommand.ExecuteReader()'后,立即调用OnDataChangeNotification处理程序,并使用SqlNotificationEventArgs参数显示Info:Invalid, Source:Statement, Type:Subscribe。
有人知道问题可能是什么或如何确定/调试它是什么(不使用SQL profiler,我没有atm)。
为了使用SqlDependency通知,必须在SQL select语句中为表使用两个部分名称(dbo.TableName):
SqlDependency.Start(connectStr);
_connection = new SqlConnection(connectStr);
_connection.Open();
_sqlCommand = new SqlCommand("Select [id] from dbo.TableTest", _connection);
_sqlCommand.Notification = null;
SqlDependency dependency = new SqlDependency(_sqlCommand);
dependency.OnChange += this.OnDataChangeNotification;
这里是查询通知要求的链接:MSDN查询通知。
希望有帮助。