【问题标题】:Error : When Using SqlDependency Without Providing an Options Value错误:在不提供选项值的情况下使用 SqlDependency
【发布时间】:2013-10-03 09:41:54
【问题描述】:

我正在处理查询通知。我在我的数据库中创建了 Queue、ServiceRoute。我正在通过 IP 地址 访问我在 Network 上的数据库,所以我在 Sql Server 中创建了一个 Route,就像这样。 .

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 中使用 Local Connection StringRoute 作为 Local,它的工作非常完美,但如果我访问我的组织本地网络上的数据库,它不会在新插入上显示通知

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

 SqlDependency dependency = new SqlDependency(command);

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

请帮助...

【问题讨论】:

    标签: c# sql-server service-broker


    【解决方案1】:

    在Startup类中添加启动依赖

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

    【讨论】:

      【解决方案2】:

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

      ALTER DATABASE [your_database_name] SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;
      

      【讨论】:

        【解决方案3】:

        SqlDependency 只能在本地工作,因为它会继续为您部署目标服务、队列和激活程序。如果您想在远程场景中部署,您将需要使用更基本的SqlNotificationRequest。您必须自己在应用程序中部署所需的目标服务。见Using SqlNotificationRequest to Subscribe to Query Notifications

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

        【讨论】:

        • 我想访问我在本地网络上的数据库,那么根据您的通知,什么应该是有效的解决方案..
        • 通知应该是本地的。阅读here 以了解其工作原理。
        猜你喜欢
        • 1970-01-01
        • 2020-11-06
        • 1970-01-01
        • 2022-01-20
        • 2014-07-19
        • 2021-12-29
        • 2022-01-24
        • 2019-11-06
        • 2021-05-05
        相关资源
        最近更新 更多