2010-01-26 3 views
0

SQL Server 2005 사용 :SQL Server 2005에 저장된 proc 실행

하나의 저장된 proc이 여러 개의 다른 proc를 호출합니다. 하나 개의 코드 세그먼트는, 예를 들어, 이동 :

INSERT INTO Log (...) VALUES (A...) 
EXECUTE StoredProcA params... 
INSERT INTO Log (...) VALUES (A...) 

INSERT INTO Log (...) VALUES (B...) 
EXECUTE StoredProcB params... 
INSERT INTO Log (...) VALUES (B...) 

StoredProcA 실행이 완료되기 전에 StoredProcB이 실행되는 것으로 보인다. B가 시작되기 전에 A가 완료되었는지 어떻게 확인할 수 있습니까?

내가 지금 생각해 낼 수있는 가장 좋은 해결책은 A의 끝에 B에 전화하는 것입니다. 다른 아이디어는 없습니까?

+0

이것이 어떻게 진행되고 있다고 생각합니까? 그것은 ssms의 결과 패널에 출력됩니까? 이 출력은 일반적으로 전체 배치가 완료 될 때까지 지연됩니다. – Ray

답변

2

이 아닙니다. SQL은 코드를 통해 동기식입니다.

어떻게 생각하십니까? 로그 테이블 항목?

1

이전에 완료 될 때까지 하나의 명령문이 시작되지 않습니다. 추적기에 프로파일 러를 사용하여 이것을 확인하거나 호출 주위에 인쇄 명령문을 넣을 수 있습니다. SQL Server가 이전 줄에서 끝날 때까지 계속되지 않을 것입니다.

0

두 개 이상의 별도 프로세스 (연결)가 동시에 저장된 프로 시저를 실행하고 다른 프로세스보다 먼저 완료되는 경우가 있습니다. 이 코드가 트랜잭션으로 실행됩니까?

0

처음 실행 된 프로 시저를 측정하는 데 정확히 무엇을 사용합니까? 로그 테이블에는 많은 수의 삽입이 있지만 테이블에는 고유 순서가 없으므로 삽입 순서는 표시되지 않으며 ORDER BY 절을 사용하는 쿼리에서만 순서가 작성되므로 테이블의 두 레코드에서 절대로 알 수 없습니다 '첫 번째'로 삽입되었습니다.

관련 문제