找不到对话句柄“1FBDE14B-0A07-EB11-B81C-3CECEF20BFDC”

问题描述 投票:0回答:1

我使用了 SQL Service Broker 和 SQL Table Dependency,并在表中启动了 SQL 表依赖,以获取表数据更改的通知。我已经给了SQL表依赖文档中列出的数据库的所有权限。一段时间后,可能处于空闲状态,它的状态为“等待通知。

我收到此错误。

当我在表中更改(插入新记录)时,状态没有更改(等待通知)并给出错误:

ErrorSystem.Data.SqlClient.SqlException (0x80131904): The conversation handle "1FBDE14B-0A07-EB11-B81C-3CECEF20BFDC" is not found.
    An error was raised during trigger execution. The batch has been aborted and the user transaction, if any, has been rolled back.

这是我的代码:

_sqlTableDependencyOrders = new SqlTableDependency<OrderTrigger>(DBConnection.GetOnlineConnectionString(), "Order");
            _sqlTableDependencyOrders.OnChanged += OnDatabaseEventChanged;
            _sqlTableDependencyOrders.Start();
c# sql-server sqldependency
1个回答
0
投票

错误消息表明无法识别 SQL Service Broker 会话句柄。发生这种情况的原因有多种,解决此问题可能需要执行多个过程。您可以采取以下一些步骤来帮助识别并解决问题:

确保 SQL Service Broker 已打开:首先,确保在包含您正在监视的表的数据库上启用 SQL Service Broker。这可以使用 SQL 查询进行验证:

SELECT is_broker_enabled FROM sys.databases WHERE name = 'YourDatabaseName';

如果未启用,您可以使用以下方法启用它:

ALTER DATABASE YourDatabaseName SET ENABLE_BROKER;

检查对话端点:检查聊天端点是否设置正确且可运行。以下 SQL 查询可用于检查端点:

SELECT * FROM sys.conversation_endpoints;

如果存在任何困难或端点不活动,您可能需要评估 Service Broker 设置,并可能需要重建端点。

Service Broker 已启动并正在运行:检查 SQL Service Broker 是否处于活动状态。您可以使用以下内容来确定其当前状态:

SELECT is_broker_enabled FROM sys.databases WHERE name = 'YourDatabaseName';

如果它没有运行,您可以使用以下命令启动它:

ALTER DATABASE YourDatabaseName SET NEW_BROKER;
© www.soinside.com 2019 - 2024. All rights reserved.