4

我正在处理查询通知。我在我的数据库中创建了队列、服务路由。我正在通过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);

它工作完美,如果我使用Local Connection StringSql Server中的Route作为Local,但是如果我在我的组织本地网络上访问 DB ,它不会向我显示关于新 Insertion的通知

我也使用了SqlDependency对象,如下所示,但它给了我下面的Error

 SqlDependency dependency = new SqlDependency(command);

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

请帮忙...

4

3 回答 3

5

在 Startup 类中添加启动依赖

System.Data.SqlClient.SqlDependency.Start(ConnectionString);
于 2016-09-26T11:15:31.547 回答
3

您需要ENABLE_BROKER通过运行以下查询来设置数据库:

ALTER DATABASE [your_database_name] SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;
于 2018-07-06T03:08:32.423 回答
1

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

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

于 2013-10-07T06:51:23.610 回答