SQL Server 저장 프로 시저를 병렬로 실행하려면 어떻게해야합니까?
-
07-07-2019 - |
문제
나는 다음과 같은 일을하고 싶다 :
exec sproc1 and sproc2 at the same time
when they are both finished exec sproc3
DTS 에서이 작업을 수행 할 수 있습니다. Transact SQL에서 수행 할 수있는 방법이 있습니까? 아니면 배치 스크립트 (예 : VBS 또는 PowerShell)로 수행 할 수있는 방법이 있습니까?
해결책
SP _ 시작 _ 작업
나는 현재 비슷한 일을하고 있으며, SSIS 또는 일부 외부 쉘 사용을 피하는 유일한 방법은 내로드 루틴을 '스레드'로 쪼개고 단일 마스터 Sqlagent 작업을 시작하는 것입니다. 스레드가있는 것처럼 많은 sp _ start _ 작업을 실행합니다. 그 시점부터 그들은 모두 자율적으로 실행됩니다.
우리가 찾고있는 것이 아니라 결과는 동일합니다. 하위 작업의 작업 상태를 테스트하면 SPROC 3의 조건부 시작도 구현할 수 있습니다.
한 번에 모두 사용할 수 없다면 8 코어의 요점은 무엇입니까?
다른 팁
CLR 저장 프로 시저를 만들 수 있습니다 (C#사용)이 자체 스레드에서 첫 두 개를 호출 한 다음 둘 다 완료 될 때까지 차단 한 다음 세 번째를 실행할 수 있습니다.
상황에서 CLR 스프로스를 사용할 수 있습니까? 그렇다면이 답변을 편집하여 자세한 내용을 설명하겠습니다.
동시에 두 SP를 모두 실행해야합니까?
단일 SP 내의 간단한 CRUD 문을 사용하면 SQL S가 발견 한 것을 발견했습니다. 어떤 것이 병렬로 실행될 수 있는지 결정하는 데 매우 적합합니다. T-SQL 문에서 순차적으로 호출되는 경우 SQL S. 2 SP를 병렬로 실행 한 적이 없습니다. 가능한지조차 모릅니다.
이제 DTS가 실제로 병렬로 실행합니까? 그것은 단순히 순차적으로 실행 한 다음 마지막 마무리 후 성공적으로 3 번째 SP를 호출 할 수 있습니다.
그것이 실제로 병렬로 실행된다면, 아마도 dts를 고수해야하지만, DTS 패키지 호출, 예를 들어, 10 개의 헤비 듀티 SP를 병렬로 사용하는 경우 어떻게 해야하는지 알고 싶습니다 ...해야 할 수도 있습니다. 나 자신을 배우는 몇 가지 테스트 : d
SSI를 사용할 수 있습니다. 이것의 이점은 패키지를 SQL 서버에 저장하고 쉽게 예약 할 수 있다는 것입니다.
PowerShell 또는 거의 모든 외부 스크립팅 언어에서 SQL 명령 줄 OSQL 또는 SQLCMD를 사용할 수 있습니다. 이 기술은 또한 XP_CMDSHELL을 사용하여 SQL 서버에서 예약하는 데 사용될 수 있습니다.