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

时间:2013-10-03 09:41:54

标签: c# sql-server service-broker

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

ALTER ROUTE [NotificationMessagesRoute]   
WITH  SERVICE_NAME  = N'MyNotificationService' ,  
ADDRESS  = N'TCP://myIPAddress:PortNo' --
在FrontEnd上它已经像这样使用了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()。

Plz帮助......

3 个答案:

答案 0 :(得分:4)

在Startup类中添加启动依赖项

System.Data.SqlClient.SqlDependency.Start(ConnectionString);

答案 1 :(得分:3)

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

ALTER DATABASE [your_database_name] SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;

答案 2 :(得分:1)

SqlDependency仅在本地工作,因为它会继续为您部署目标服务,队列和激活过程。如果要在远程方案中部署,则需要使用更基本的SqlNotificationRequest。您必须在app中自行部署所需的目标服务。请参阅Using SqlNotificationRequest to Subscribe to Query Notifications

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