3

リモートSQLServer(2005)で新しいデータを監視するには、SqlDependencyを登録する必要があります。接続は都市や国を超えているため、接続が失われる可能性があります。接続損失をどのように処理する必要がありますか?通常モードでは、.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();
4

1 に答える 1

4

オーバーロードされたコンストラクターを使用してタイムアウトを減らし、少なくともこの問題の頻度を減らすことができます。これはMSが知っている問題であり、残念ながら私が認識している修正はありません。

Microsoftの共同電話は、それが問題であることを知っており、修正するつもりはないということです。以前は、これが本番データベースで実際の問題になったときに、ポーリングに基づいて独自のソリューションを展開していました。

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

于 2012-05-29T08:13:22.780 に答える