2012-05-29 2 views
3

원격 SQL Server (2005)에서 새 데이터를 보려면 SqlDependency를 등록해야합니다. 연결이 도시와 국가에 있기 때문에 연결 손실이 발생할 가능성이 있습니다. 연결 손실을 어떻게 처리해야합니까? 일반 모드에서는 .Open()에서 예외를 사용할 수 있지만 SqlDependency 연결을 사용하면 여전히 열립니다..NET 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(); 

답변

3

오버로드 된 생성자를 사용하여 시간 초과를 줄이거 나 최소한이 문제의 빈도를 줄일 수 있습니다. 이것은 MS가 알고있는 문제이며, 불행히도 내가 알고있는 문제가 없다.

Microsoft의 파티 라인은 문제가 있다는 것을 알고 있으며 해결하지 않을 것입니다. 과거에는 프로덕션 데이터베이스에서 실제 문제가되었을 때 폴링을 기반으로 자체 솔루션을 선보였습니다. 정보

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

+0

감사합니다. 반복적 인 재접속/타이머에 의한 재 초기화 (예 : 예방)는 어떻게됩니까? – Fanda

+0

@Fanda 어떤 접근 방식으로 귀하의 신청서를 제출 했습니까? – zaitsman

+0

SqlDependency를 사용하지 않기로했습니다. 하지만 내가 생각했던 해결책은 어떤 시간대에 폴링/재접속과 결합하는 것이 었습니다. – Fanda