Мне кажется, я нашел ответ на этот вопрос.
Поскольку Spring использует собственный менеджер транзакций, он блокирует таблицы, которые я создаю в этой процедуре.
Когда эта процедура выполняет BCP, она запускается на SQL Server, выходящем за рамки транзакции Spring. Поэтому BCP не может получить доступ к нужным таблицам, поскольку они заблокированы транзакцией Springs. Процедура не может быть продолжена, поскольку она ожидает на BCP, поэтому весь процесс зашел в тупик.
Я заметил, что это происходит везде, где у команды BCP есть внешняя транзакция, и, хотя у BCP есть флаг TransactionIsolation, в данном случае это, похоже, не оказывает никакого влияния.
Для решения этой проблемы я сейчас использую задания SQL Server для запуска процедуры без транзакций.
В любом случае, по крайней мере, я могу быть благодарен за то, что этот вопрос принес мне значок «Плетеный»;)
Спасибо всем!