2012-09-17 5 views
4
같은 this 등 여러 가지 자원에 따르면

,트랜잭션에서 트리거가 실행되는 것을 방지 할 수 있습니까?

트리거의 컨텍스트 내에서 실행되는 쿼리가 자동으로 트랜잭션에 싸여있다. 트리거 코드에 분산 쿼리가 있으면 트랜잭션이 자동으로 분산 트랜잭션으로 승격됩니다.

간단한 질문 -이 동작을 방지하는 방법이 있습니까? 명시 적으로 트리거의 코드가 트랜잭션의 컨텍스트에서 실행되는 것을 방지하는 방법을 찾고 있습니다.

+0

http://stackoverflow.com/questions/174600/is-there-a-way-to-disable-a-sql-server-trigger-for-just-a-particular-scope-of-ex – zloctb

답변

3

호출 트랜잭션이 대기 할 필요가 없도록 비동기 작업을 수행하려는 경우 정확히 수행하도록 설계된 Service Broker을 고려할 수 있습니다. 일부 비동기 태스크를 실행 취소하고 호출자에게 제어를 반환합니다. 트랜잭션 범위에 관계없이

또 다른 아이디어는 트리거가 작업을 수행하지 않고 대기열 테이블에 작업 항목을 띄우고 큐를 처리하기 위해 연속적으로 백그라운드 프로세스를 실행하는 것입니다. 작업 항목이 inserted/deleted의 데이터 세트에서 작동하는 경우 반드시 수행해야하는 것은 아니지만 더 많은 컨텍스트가 없으면 확실하게 실행 가능한 옵션처럼 보입니다.

트리거가 호출 트랜잭션의 일부가되지 않도록하는 방법을 알지 못합니다. 사실 그 점이 전부입니다.

1

"자율 트랜잭션"이라고하며이를 구현하는 가장 간단한 방법은 링크 된 서버를 만들어 원래 데이터베이스를 가리키는 것입니다.

가능한 해결책은 this MSDN blog을 참조하십시오.

관련 문제