SQL Server 2005 хранится в процессе выполнения - PullRequest
0 голосов
/ 26 января 2010

Использование SQL Server 2005:

У меня есть один сохраненный процесс, который вызывает несколько других в нем. Например, один сегмент кода:

INSERT INTO Log (...) VALUES (A...)
EXECUTE StoredProcA params...
INSERT INTO Log (...) VALUES (A...)

INSERT INTO Log (...) VALUES (B...)
EXECUTE StoredProcB params...
INSERT INTO Log (...) VALUES (B...)

Похоже, что StoredProcB выполняется до того, как StoredProcA завершит выполнение. Как я могу убедиться, что А закончил до того, как начнется В?

Лучшее решение, которое я могу найти прямо сейчас, - это позвонить B в конце A. Есть еще идеи?

Ответы [ 4 ]

2 голосов
/ 26 января 2010

Это не произойдет . SQL синхронен через код.

Что заставляет вас думать, что это происходит? Записи таблицы журнала?

1 голос
/ 26 января 2010

один оператор не запустится, пока не будет выполнен предыдущий. Или используйте профилировщик для трассировки, чтобы подтвердить это, или поместите операторы печати вокруг вызовов. Вы увидите, что SQL Server не продолжит работу, пока не завершится с предыдущей строкой

0 голосов
/ 26 января 2010

Что именно вы используете для измерения, какая процедура была выполнена первой? У вас есть куча вставок в таблицу Log, но вставки не указывают порядок выполнения, так как таблицы не имеют собственного порядка, порядок создается только запросом с использованием предложения ORDER BY, поэтому вы никогда не сможете отличить две записи в таблице который был вставлен «первый».

0 голосов
/ 26 января 2010

Возможно, есть два или более отдельных процесса (соединения), выполняющих сохраненный процесс одновременно, и один завершается раньше другого. Этот код выполняется как транзакция?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...