2010-07-29 4 views
17

C#에서 SQL Server 데이터베이스의 데이터 변경 내용을 수신 대기하려고합니다. 내가 가지고있는 데이터가 오래된 것인지 판단하기 위해 사용할 수있는 청취자가있을 것으로 기대하고있었습니다. 상당히 일반적인 시나리오 임에도 불구하고 단순히 데이터베이스를 폴링하지 않는 솔루션을 찾을 수 없습니다.SQL Server 데이터베이스 변경 리스너 C#

나는 내가 데이터 변경 이벤트 상에 수신줬으면하는 DataContext에 개체가 따라서 데이터에 액세스하고 Linq에 - 투 - SQL을 사용하지만 하나를 찾을 수 없습니다.

C# 메서드에서 SQL Server DB 로의 변환이 어렵다는 것을 알았습니다.이 문제가 해결 될 것으로 예상했던 이유는 GUI에 대한 공통 요구 사항이라는 것입니다. 업데이트를 수신 할 수없는 경우 GUI에 표시된 데이터를 최신 상태로 유지하는 방법 (SQL Server 데이터 소스가 지원하는 경우).

GUI 작업이 아니지만 그 영역에서 뭔가를 적용 할 것으로 예상했습니다.

C#에서 SQL Server 데이터베이스 변경 이벤트를 구독 할 수있는 방법이 있습니까?

답변

5

SqlDependency class을 찾고 계시므로 SQL 쿼리의 결과 집합에 대한 변경을 수신 대기 할 수 있습니다.

3

DataContext는 SQL Server에서 모든 유형의 수신기 기능을 제공하지 않습니다. 가장 좋은 방법은 변경 사항을 주기적으로 데이터베이스를 폴링하고 주 응용 프로그램이들을 수있는 이벤트를 노출하는 폴링 응용 프로그램 또는 별도의 스레드를 만드는 것입니다.

0

DB의 단일 행이있는 테이블을 사용하여 마지막으로 업데이트, 삽입 또는 삭제 된 이벤트를 카탈로그 한 다음이 테이블을 업데이트하고 변경 사항을 폴링하기 위해 각 중요 테이블에 트리거를 만듭니다.

+0

끊임없이 테이블을 모니터링해야하기 때문에 빠른 변경이 필요한 DB에는 효과가 없으며 검사간에 변경 사항을 건너 뛰지 않는다고 보장 할 수 없으므로 더욱 그렇습니다. – PedroC88