【问题标题】:How to handle connection loss using .NET SqlDependency如何使用 .NET SqlDependency 处理连接丢失
【发布时间】:2012-05-29 08:00:35
【问题描述】:

我需要注册 SqlDependency 以查看远程 SQL Server (2005) 上的新数据。连接丢失是可能的,因为连接跨越城市和国家。我应该如何处理连接丢失?在正常模式下,我可以在 .Open() 上使用异常,但使用 SqlDependency 连接仍然打开。

感谢您的提示。

SqlCommand command = new SqlCommand("SELECT id FROM dbo.batches WHERE terminalId = @terminalId", msConnection);

command.Parameters.AddWithValue("@terminalId", SqlDbType.Int);
command.Parameters["@terminalId"].Value = terminalId;

SqlDependency dependency = new SqlDependency(command);
dependency.OnChange += new OnChangeEventHandler(NewBatchHandler);
SqlDependency.Start(connectionString);
command.ExecuteNonQuery();

【问题讨论】:

    标签: c# .net sqldependency


    【解决方案1】:

    您可以使用重载的构造函数来减少超时,至少可以减少此问题的频率。这是 MS 知道的一个问题,不幸的是,我知道没有解决方法。

    Microsoft 党的路线是他们知道这是一个问题并且不会解决它。过去,当这成为生产数据库的真正问题时,我基于轮询推出了自己的解决方案。

    http://connect.microsoft.com/SQLServer/feedback/details/543921/sqldependency-incorrect-behaviour-after-sql-server-restarts

    【讨论】:

    • 感谢您的信息。例如,通过计时器重复重新连接/重新初始化怎么样(作为预防)?
    • @Fanda 你最终在你的申请中采用了什么方法?
    • 我决定不使用 SqlDependency。但我正在考虑的解决方案是在一段时间内将其与轮询/重新连接结合起来。
    猜你喜欢
    • 2015-01-14
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    • 2018-04-29
    • 1970-01-01
    相关资源
    最近更新 更多