gpt4 book ai didi

c# - SqlDependency notification - 执行查询后立即失败通知

转载 作者:太空狗 更新时间:2023-10-29 18:11:09 26 4
gpt4 key购买 nike

我在尝试设置 SqlDependency 通知以在 sql server 上的表中的数据发生更改时接收通知时遇到问题。但是,一旦我执行用于设置 sql 依赖项的查询,就会立即收到一条通知,表明由于 sql 语句的问题导致订阅尝试失败(SqlNotificationEventArgs 显示信息:无效,来源:声明,类型:订阅)

这表明我的 sql 查询有问题,但在尝试了一个非常基本的示例以确保这不是 select 语句的问题后,我仍然立即收到这些“无效”通知。我还确保我已经启动了 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 处理程序,并使用显示 Info:Invalid、Source:Statement、Type:Subscribe 的 SqlNotificationEventArgs 参数。

任何人都知道问题可能是什么或如何确定/调试它是什么(不使用我没有 atm 的 SQL 分析器)。

最佳答案

为了使用 SqlDependency 通知,您必须在 SQL 选择语句中为表使用两部分名称 (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 Query Notifications .

希望这对您有所帮助。

关于c# - SqlDependency notification - 执行查询后立即失败通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7946885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com