2010-06-10 6 views
2

SP_A является хранимой процедурой, которая вызывает SP_B, затем делает SELECT, а затем ОБНОВЛЯЕТ те же записи/столбец, что SP_B только что ОБНОВЛЕНО. SP_A имеет транзакцию вокруг операторов SELECT и UPDATE, за которыми следует COMMIT.Время хранимой процедуры хранимой процедуры MySQL при вызове с C#

Теперь все работает отлично, когда я вызываю SP_A из командной строки MySQL. Однако, когда я называю это с C#, он разыгрывается каждый раз.

Странная вещь, если я изменю SP_A так, чтобы он не вызывает SP_B и из C# кода вызова SP_B и затем SP_A отдельно, она работает. Почему это?

Я все еще пытаюсь точно определить, в чем проблема. Это может быть:

  • Вы не можете называть SP, который вызывает другую SP
  • Вы не можете называть SP, который вызывает другую SP, который обновляет те же записи, как вызываемая сторона ОБНОВЛЕНИЕ
  • Вы можете» т сделать выше, когда есть сделка участие

И помните, проблема появляется только при запуске из C# с помощью MySqlCommand



Примечание:
MySql.Data v2.0.50727
MySQL Connector Net 6.2.2
драйвер ADO.Net для MySQL
.NET Framework 4

+0

Как * long * требуется ли из командной строки MySql? Если это займет некоторое время (> 30 секунд), тогда будет зачислен тайм-аут команды по умолчанию из ADO.Net. –

+0

Меньше секунды – colithium

ответ

1

Это звучит как CommandTimeout это проблема -> когда возникает «длинный» запрос, .NET Connector будет тайм-аут. Увеличение порога CommandTimeout должно позволить работать с запросом/процедурой.

Примечание: время ожидания в секундах.

+0

Запрос не занимает очень много времени. Менее секунды – colithium

Смежные вопросы