2012-10-11 4 views
1

I는 웹 서비스 방법닷넷 웹 서비스 제한 시간 - 포기 작업

WebService에 방법은 장기 실행 트랜잭션을 시작을 호출하는 윈폼 응용 프로그램이

(불행하게도 하나 개의 긴 실행 한 반대로 작은 많은 명령이 있습니다.)

지금까지 웹 서비스 호출 시간이 웹 서비스 메서드에서 실행 시간이 계속 실행되고 완료되는지 확인할 수 있습니다. 내가 무슨 일이 일어나길 원한다면 웹 서비스 타임 아웃 때 트랜잭션이 롤백되는 것입니다. 이것이 가능한가?

+0

당신이 시간 제한 값을 전달할 수 : DBA가의 stackexchange에서 그것에 정말 좋은 토론이있다. DB 명령을 실행할 때 지정된 시간 초과를 사용하십시오. 이렇게하면 클라이언트는 기다릴 기 간을 지정합니다. 명령이 시간 초과되면 예외 처리기가 트랜잭션을 롤백 할 수 있습니다. 또 다른 가능성은 클라이언트가 훨씬 오래 기다릴 수 있도록 비동기식 웹 서비스 호출을 사용하는 것입니다. – tomasmcguinness

+0

감사합니다. 불행히도 하나의 장기 실행 명령과 달리 작은 명령이 많이 있습니다. – AJM

+0

죄송합니다! 질문을 자세히 읽는 법을 배워야합니다. 명령을 완료 할 때마다 경과 시간을 확인하는 것이 하나의 비효율적 인 옵션입니다. 경과 시간이 너무 길면 트랜잭션을 중단하고 롤백하십시오. – tomasmcguinness

답변

0

오래된 스레드를 되 살리지 만 동일한 문제가 있었으므로이 문제를 해결할 다른 사람에게도이를 알릴 것이라고 생각했습니다. 내가 찾은 가장 좋은 방법은 XACT_ABORT 즉, 트랜잭션의 시작

SET XACT_ABORT ON

를 삽입 사용하는 것입니다. 이렇게하면 모든 유형의 클라이언트 오류에 대한 롤백이 강제 실행됩니다 (트랜잭션이 계속 실행되지 않고 완료되지 않으면 롤백 만됩니다). 당신이 웹 서비스를 호출 할 때

https://dba.stackexchange.com/questions/10912/sql-server-transaction-timeout