хранимая процедура - несколько SQL операторов - PullRequest
0 голосов
/ 04 августа 2020

У меня есть SP, созданный в базе данных A, которая имеет несколько SQL текстов (Delete/Insert/Update) и часть его, вызывающая другую процедуру базы данных B в блоке try. Если я запускаю локально, он работает нормально, но когда я выполняю SP через ETL tool параллельно с параллелизмом, из 6 вызовов 2 или 3 случайно терпят неудачу, говоря, что объект базы данных B не существует databaseA.object, Не уверен, почему это происходит.

есть идеи, как решить? Может ли это быть связано с потоком sql операторов? Как мы можем гарантировать, что операторы sql выполняются после других? SQL не работает только при привязке к базе данных B. ETL устанавливает соединение с базой данных A, и, поскольку он не дает сбоев для всех операторов, я не занимаюсь его авторизацией.

Create procedure DB_A_PROC(id varchar)
--
---
as
Try {
sql1 execution on database B (Calling another procedure of database B)
sql2 exeecution on database A (delete)
sql3 execution on database B (Calling another procedure of database B)
sql4 execution on database B (Calling another procedure of database B)
sql5 execution on database A (insert)
sql6 execution on database B (Calling another procedure of database B)
}
catch {
}

1 Ответ

0 голосов
/ 04 августа 2020

Попробуйте заключить свои операторы в транзакции, чтобы убедиться, что они не выполняются не по порядку из-за того, что процесс выполняется несколько раз параллельно.

...