c# - 如何使用 .NET SqlDependency 处理连接丢失

标签 c# .net sqldependency

我需要注册 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();

最佳答案

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

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

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

关于c# - 如何使用 .NET SqlDependency 处理连接丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10795221/

相关文章:

c# - protobuf-net AddField 忽略 IgnoreListHandling

c# - {Binding} 的代码隐藏等效项是什么?

.net - 使用标准 .NET GDI 打印类从 .NET 生成 PDF 文件

.net - 一次性 System.Threading.Timer 如何 self 处置?

.net - 关闭时 SqlDependency 订阅不会从 dm_qn_subscriptions 中删除

javascript - 使用带有 SqlDependency 的 SignalR 推送数据库更新

c# - 如何使用 moq 对在 .NET 中使用 asmx 服务的应用程序进行单元测试

c# - 为什么我们使用类名调用委托(delegate)?为什么它不能在类对象列表中列出?

c# - Npgsql参数化语句

c# - 如何捕获已在 sql server 上触发的触发器