2016-09-08 2 views
0

일부 테이블에서 일부 데이터가 변경되면 사용자에게 알릴 필요가 있습니다.데이터 변경에 대한 SQL Advance Notification?

다른 테이블 (tb_notification)에 데이터를 삽입하고 해당 테이블을 확인하고 사용자에게 메시지를 표시하는 타이머가있는 트리거를 정의 할 수 있음을 알고 있습니다.

이것이 하나의 해결책입니다.

그래서 SQLCLR 또는 SQL SMO 그렇지도 뭔가 다른 해결책이있다? 내가 너무 많은 약 SQLCLR 또는 SQL SMO을 모르는 및 솔루션이 문제를 처리하는 최선의 방법을 선택하는 찾고 있어요

.

+0

사용자 위치 (예 : Windows 응용 프로그램, 웹 브라우저, 전화 앱, Excel 등) – adrianm

답변

1

사용자에게 알리는 가장 적합한 방법은 무엇을 말하고 있는지에 따라 달라집니다. 그러나 SMO은 알림과 관련하여 메타 데이터와의 일반적인 상호 작용을 훨씬 쉽게하기 때문에 아무 것도하지 않을 것이라고 생각합니다.

사용자에게 이메일로 보내려는 경우 T-SQL 트리거를 통해 sp_send_dbmail으로 전화해야합니다. 이 시스템 저장 프로 시저는 Service Broker를 통해 비동기 적으로 실행되므로 DML 문을 유지하지 않아야합니다.

웹 서비스를 호출해야하는 경우 은 SQLCLR 트리거 또는 SQLCLR 함수/저장 프로 시저를 호출하는 T-SQL 트리거를 통해 수행 할 수 있습니다. 단점은 웹 서비스 호출이 응답을 기다리는 동안 또는 DML 문을 정지시킬 가능성이 훨씬 더 크다는 것입니다 (최대 연결 구성 방법에 따라).

T-SQL 트리거를 필요한 정보를 큐 테이블에 덤프 한 다음 SQL Server 에이전트 작업을 실행하여 해당 큐 테이블의 레코드를 처리 할 수도 있습니다. 레코드가 "처리"되면 레코드를 삭제하십시오. 이 옵션은 당연히 비동기식이므로 SQLCLR을 통해 웹 서비스 호출을하는 것이 훨씬 위험합니다. 또는이 방법을 sp_send_dbmail과 함께 사용하면 "즉시"전자 메일 알림 이 공통 감사 데이터베이스로 보내는 것과 같이 대기열 테이블에서 해당 데이터로보다 일반적인 것을 수행 할 수 있으므로 UI 많은 사람들이 귀하의 앱을 통해 볼 수있는 변화에 대해보다 "글로벌 한"모습을 갖도록 추가 될 수 있습니다.

관련 문제