错误 :在没有提供选项值的情况下使用 SqlDependency 时

本文关键字:情况下 SqlDependency 选项 错误 | 更新日期: 2023-09-27 18:33:47

我正在处理查询通知。我已经在我的数据库中创建了队列、服务和路由。我正在通过IP地址访问我的网络数据库,所以我在Sql Server中创建了一个路由,如下所示。

ALTER ROUTE [NotificationMessagesRoute]   
WITH  SERVICE_NAME  = N'MyNotificationService' ,  
ADDRESS  = N'TCP://myIPAddress:PortNo' --

在前端,它使用了这样的SqlDependency

SqlDependency dependency = new SqlDependency(command), "Service=MyNotificationService;local database=Test", int.MaxValue);

如果我使用本地连接字符串并在 Sql Server 中路由为本地,它的工作非常完美,但是如果我在我的组织本地网络上访问数据库,它不会向我显示有关新插入通知

我也使用了如下的 SqlDependency 对象,但它在错误下方给了我。

 SqlDependency dependency = new SqlDependency(command);

错误:当使用SqlDependency 而不提供选项值时,必须在执行添加到 SqlDependency 实例的命令之前调用 SqlDependency.Start((。

请帮忙...

错误 :在没有提供选项值的情况下使用 SqlDependency 时

在启动类中添加启动依赖项

System.Data.SqlClient.SqlDependency.Start(ConnectionString);
您需要

通过运行以下查询来设置数据库的ENABLE_BROKER

ALTER DATABASE [your_database_name] SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;

>SqlDependency只在本地工作,因为它会继续为您部署目标服务、队列和激活的过程。如果要在远程方案中部署,则需要使用更基本的SqlNotificationRequest 。您必须在应用程序中自行部署所需的目标服务。请参阅使用 SqlNotificationRequest 订阅查询通知。

我希望你确实了解远程路由在其目标处需要另一个 SQL Server 实例,而不是你的应用,并且你必须正确设置终结点和对话安全性,请参阅 Service Broker 通信协议。你的方案不太可能需要远程路由。