2012-05-17 2 views
2

나는 이와 비슷한 것을 찾고있다. 구문이 잘못되었지만 원칙을 보여줍니다.알 수없는 수의 저장된 procs를 병렬로 실행하는 방법

foreach(int i in myIntArray) 
{ 

execute mystoredProc i;//this should kick off the proc and go onto next one without waiting for a return value 

} 

이러한 저장된 procs는 Windows 응용 프로그램에서 호출됩니다. 나는 응용 프로그램 끝에 많은 스레드를 만드는 약간 회의적입니다. 오히려 SQL 서버 끝에서 스레딩을 할 것입니다. SSIS 사용에 대해 열려 있습니다.

+0

이 답변의 나누기 및 정복 섹션을 확인하십시오. http://stackoverflow.com/questions/4129071/optimal-mysql-settings-for-queries-that-deliver-large-amounts-of-data/4144514#4144514 –

답변

1

직접 요청한 것을 수행 할 수 없습니다.

당신 할이 n 스레드를 해고하는 것입니다, 다음 각 스레드가 자신의 연결을 열고 각 연결은 자신의 SQL 쿼리의 실행합니다. 그러면 각 스레드는 쿼리가 반환 될 때까지 기다립니다. 한 스레드에서만이 작업을 수행 할 수 없습니다.

이것은 또한 T-SQL에서 기본적으로 수행 할 수 없다는 것을 의미합니다.

여러 스레드를 시작하는 CLR 루틴을 작성하고 위 프로세스를 반복 할 수 있습니다. 따라서 T-SQL이 CLR 코드를 호출하고 CLR이 동시성 문제를 처리하게합니다.

하지만 실제로는 여러 클라이언트 측 스레드를 사용하는 것이 일반적입니다.

관련 문제