MSSQL Запуск хранимой процедуры несколько раз одновременно

Проблема

У меня есть приложение CakePHP, в котором я вызываю хранимую процедуру:

$this->FileUpload->query('exec sproc_runjob_ProcessTests', false); 

Эта процедура подбирает загруженный файл и обрабатывает его. Иногда люди загружают несколько файлов, которые называет это один раз для каждого загруженного файла.

Проблема в том, что я получаю эту ошибку:

 Database Error Error: SQLSTATE[42000]: [Microsoft][SQL Server Native Client 11.0][SQL Server] SQLServerAgent Error: Request to run job ProcessTests (from User [redacted]) refused because the job already has a pending request from User [redacted]. SQL Query: exec sproc_runjob_ProcessTests 

Насколько я могу судить, это означает, что хранимая процедура не может работать одновременно – мне придется запускать sproc для каждого процесса последовательно, что было бы позором на нашем новом новом многоядерном сервере.

Решения, о которых мы думали

  1. Запускать sproc серийно

    В принципе, идея состоит в том, чтобы однажды вызвать хранимую процедуру, а затем проигнорировать ее сбой, если она уже запущена. В конце вызова sproc он проверит базу данных, чтобы увидеть, нужно ли ее снова запускать (если есть какие-либо «новые» файлы) и снова запустить себя, если это так.

  2. Не используйте существующую хранимую процедуру

    Это было бы трудно из-за ограничений по времени, но если у кого-то есть хорошее предположение о том, как мы должны это делать, я был бы рад услышать это.

Заранее спасибо!

Результаты поиска

  1. Похоже, у этого парня такая же проблема, и решает его, проверяя статус задания перед тем, как позвонить. Возможно, я мог бы сделать это с PHP, прежде чем сделать вызов sproc?

  2. Вот упоминание о чем-то, что называется Service Broker. На самом деле это может быть то, что я ищу, но я все равно буду любить любые материалы.

Заранее спасибо!