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()。
请帮助...
在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)
SqlDependency仅在本地工作,因为它会继续为您部署目标服务、队列和激活的过程。如果您想在远程场景中部署,您将需要使用更基本的SqlNotificationRequest. 您必须在应用程序中自行部署所需的目标服务。请参阅使用 SqlNotificationRequest 订阅查询通知。
我希望您确实了解远程路由在其目的地期望另一个 SQL Server 实例,而不是您的应用程序,并且您必须正确设置端点和对话安全性,请参阅Service Broker 通信协议。您的场景不太可能需要远程路由。