내 웹 사이트에서 몇몇 테이블을 추가/업데이트/삭제하는 것과 같은 몇 가지 이벤트를 감사/기록 할 계획입니다. 데이터베이스 트리거를 추가 할 계획입니다. 감사 테이블에 많은 양의 데이터가있을 수 있고 그 테이블에 행을 삽입하는 데 시간이 더 걸릴 것이라고 생각합니다. 제 질문은 트리거가 비동기로 실행되거나 프런트 엔드 호출이 반환되기 전에 완료해야하는지 여부입니다.데이터베이스 트리거, 비동기입니까?
감사
는내 웹 사이트에서 몇몇 테이블을 추가/업데이트/삭제하는 것과 같은 몇 가지 이벤트를 감사/기록 할 계획입니다. 데이터베이스 트리거를 추가 할 계획입니다. 감사 테이블에 많은 양의 데이터가있을 수 있고 그 테이블에 행을 삽입하는 데 시간이 더 걸릴 것이라고 생각합니다. 제 질문은 트리거가 비동기로 실행되거나 프런트 엔드 호출이 반환되기 전에 완료해야하는지 여부입니다.데이터베이스 트리거, 비동기입니까?
감사
는은 거의 확실하게, 그렇지 않으면 멀리 자성의 요점을 날려 버렸어 때문에 그들이 동기 것 (변화가 테이블에 만들어 질 수있다 원자 다음 트리거는 감사 추적 즉, 실패 할 수 있습니다 쓸모 없다).
비동기 트리거를 사용할 수 없다고 말하는 것은 아닙니다. 그러나 나는 당신에게 어떤 용도로든 사용되는 것을 볼 수 없습니다.
테이블이 커질 염려가 있으시면 다른 방법으로 처리 할 수 있습니다. 하나는 파티셔닝 (예 : 날짜를 기준으로) 또는 사용할 수없는 경우 주기적으로 감사 행을 날짜 기반 아카이브 테이블로 전송 한 다음 메인 테이블에서 삭제하는 것입니다.
그런 식으로 주 테이블은 마지막으로 N
개월 동안의 데이터 만 보유하고 다른 모든 데이터는 다른 곳에 저장됩니다.
T riggers는 항상 동기입니다. 트랜잭션은 명시 적 (BEGIN TRAN
) 또는 암시 (INSERT 등) 여부에 관계없이 트랜잭션의 일부로 실행됩니다.
대부분의 응용 프로그램에서 로깅 및 감사가 필수적입니다. 트리거에서 로그 또는 기록 테이블에 대한 쓰기가 실패하면 상위 INSERT 등도 실패합니다.
트리거 만 루프와 심하게 코딩, 또는 이메일을 보내거나 당신은 또한 사용할 수있는 트리거 대신 MS Word Spell Checker 또는 calling web services
를 호출 시간이 오래 걸릴 Change Data Capture
SQL에서 [비동기 트리거의
가능한 중복 Server 2005/2008] (http://stackoverflow.com/questions/766761/asynchronous-triggers-in-sql-server-2005-2008) –
예, 거의 !!!! – Tippu
_ 거의 한 번 속임수. 다른 질문에서는 트리거를 비동기로 만드는 방법을 묻는 중입니다.이 중 하나가 트리거가 동기화 또는 비동기인지 묻습니다. _answers_에는 많은 교차가 있지만, 다른 질문의 적절한 하위 집합이 아니면 (즉, _question_가 동일해야 함) 질문을 결코 속임수로 간주하지 않습니다. 그냥 내 .02 달러. – paxdiablo