错误:使用SqlDependency而不提供选项值时

Sha*_*bal 3 c# sql-server service-broker

我正在处理查询通知。我已经在数据库中创建了队列,服务路由。我正在通过IP地址访问网络上的数据库,因此我在Sql Server中创建了这样的路由

ALTER ROUTE [NotificationMessagesRoute]   
WITH  SERVICE_NAME  = N'MyNotificationService' ,  
ADDRESS  = N'TCP://myIPAddress:PortNo' --
Run Code Online (Sandbox Code Playgroud)

在FrontEnd上,它已经像这样使用SqlDependency。

SqlDependency dependency = new SqlDependency(command), "Service=MyNotificationService;local database=Test", int.MaxValue);
Run Code Online (Sandbox Code Playgroud)

它完美的工作,如果我使用本地连接字符串,也路线SQL服务器作为本地的,但如果我在我的组织访问DB 本地网络,它不显示我的通知新插入

我还使用了SqlDependency对象,如下所示,但它在Error下面给出了我。

 SqlDependency dependency = new SqlDependency(command);
Run Code Online (Sandbox Code Playgroud)

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

请帮助...

san*_*ian 5

在Startup类中添加启动依赖项

System.Data.SqlClient.SqlDependency.Start(ConnectionString);
Run Code Online (Sandbox Code Playgroud)


小智 5

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

ALTER DATABASE [your_database_name] SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;
Run Code Online (Sandbox Code Playgroud)


Rem*_*anu 1

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

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