2015-02-06 3 views
2

SQLDependency를 사용하여 모니터링하는 SELECT 쿼리가 있습니다. 모든 것이 정상적으로 작동하지만 쿼리가 모니터링하는 데이터 집합에 대한 업데이트를 수행하는 동안 종속성을 일시적으로 중단하고 싶습니다. 하나는 데이터베이스에서 변경 알림을 발생시키는 것입니다.은 업데이트를 위해 sqldependency 알림을 일시적으로 일시 중단합니다.

현재 업데이트를 수행한다는 사실을 나타내는 플래그를 설정하고 종속성을 해제 한 다음 재설정하여 쿼리를 계속 모니터링 할 수 있습니다.

보다 세련된 방법이 있어야합니다.

+0

청취자를 중지시키고 업데이트 후에 시작할 수 있습니까? –

답변

0

SqlDependency 클래스를 사용할 때는주의해야합니다. 메모리 누수가있는 problems입니다. Hovewer에서는 SqlDependency 클래스의 오픈 소스 실현 인 SqlDependencyEx을 사용할 수 있습니다. 데이터베이스 트리거와 네이티브 Service Broker 알림을 사용하여 테이블 변경 사항에 대한 이벤트를 수신합니다. SqlDependecyEx와

int changesReceived = 0; 
using (SqlDependencyEx sqlDependency = new SqlDependencyEx(
      TEST_CONNECTION_STRING, TEST_DATABASE_NAME, TEST_TABLE_NAME)) 
{ 
    sqlDependency.TableChanged += (o, e) => changesReceived++; 
    sqlDependency.Start(); 

    // Make table changes. 
    MakeTableInsertDeleteChanges(changesCount); 

    // Wait a little bit to receive all changes. 
    Thread.Sleep(1000); 
} 

Assert.AreEqual(changesCount, changesReceived); 

당신이 UPDATE을 피하고, 단지 모니터링 삽입하거나 삭제 할 수 있습니다 : 이것은 사용 예이다. 희망이 도움이됩니다.