Несколько вызовов хранимых процедур в командном окне агента SQL Server выполняются параллельно или последовательно?
У меня есть задание агента SQL Server, которое выполняет ряд хранимых процедур. Это одношаговое задание, и в окне команд пакета указано следующее:
exec fb_GetDateSource '6A0DA1EB-D349-4D97-AAFC-822343D8EB49'
exec fb_DeliverFile '2344EC77-0D34-44A9-8A10-E5FEA1F6F218'
exec fb_DeliverFile '0BF456B8-24E5-4B0E-8FDA-F31C2D397B3A'
exec fb_DeliverFile 'C42EA4AA-3179-4344-BE24-5CEBA435F4FD'
Таким образом, первая строка собирает кучу данных во временную таблицу, а затем следующие 3 будут использовать эти данные для доставки файлов данных нашим клиентам. У нас возникли проблемы со старыми данными, попадающими в файлы.
Когда я запускаю такую команду, все ли хранимые процедуры вызываются последовательно (что я и предполагал) или они могут выполняться параллельно?
Я перемещаю первый звонок в отдельный шаг. Таким образом, он запустит его на первом этапе, а затем доставит на втором этапе. В конечном итоге тестирование покажет мне, работает ли оно, но мне интересно, могут ли эти хранимые процедуры работать параллельно друг с другом? Это объясняет нашу проблему, если это так.
1 ответ
В вашем коде:
exec fb_GetDateSource '6A0DA1EB-D349-4D97-AAFC-822343D8EB49';
exec fb_DeliverFile '2344EC77-0D34-44A9-8A10-E5FEA1F6F218';
exec fb_DeliverFile '0BF456B8-24E5-4B0E-8FDA-F31C2D397B3A';
exec fb_DeliverFile 'C42EA4AA-3179-4344-BE24-5CEBA435F4FD';
Хранимые процедуры выполняются последовательно (одна за другой). Если вы хотите параллелизма, вы можете достичь его, создав несколько заданий и запустив их из основного задания.
Основная работа: sp_start_job запустит работу и вернет управление основной программе.
EXEC msdb.dbo.sp_start_job @job_name=@MyJobName; -- job name 1
EXEC msdb.dbo.sp_start_job @job_name=@MyJobName; -- job name 2
EXEC msdb.dbo.sp_start_job @job_name=@MyJobName; -- job name 3
EXEC msdb.dbo.sp_start_job @job_name=@MyJobName; -- job name 4
Кроме того, вы можете создать пакет служб SSIS с Parallel Task
и запустите этот пакет агентом SQL Server.