Как избежать тайм-аута и выполнить хранимую процедуру базы данных SQL Azure - PullRequest
0 голосов
/ 27 июня 2019

У меня есть облачный сервис Azure, который выполняет некоторые операции в фоновом режиме.Я хочу выполнить хранимую процедуру, для которой я не могу определить время выполнения.Поэтому, пожалуйста, не рекомендуется устанавливать тайм-аут, потому что иногда он завершается в микросекундах, другой запуск может занять больше минуты.

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

Я пробовал ниже

var cmd = new SqlCommand("Purge_Data", connection)
              { CommandType = CommandType.StoredProcedure };

connection.Open();

Task.Run(() => cmd.ExecuteNonQueryAsync()));

Также cmd.BeginExecuteNonQuery(); не вызываетхранимая процедура вообще.Я пробовал это с помощью простого консольного приложения, а также .NET 4.6.1.

Пожалуйста, предложите любой другой, лучший способ

1 Ответ

1 голос
/ 27 июня 2019

Время ожидания по умолчанию составляет 30 секунд, поэтому вы не можете решить проблему, кроме как путем изменения времени ожидания.

Если вы установите тайм-аут на 0, это означает «нет тайм-аута» - ваш сохраненный процесс будет работать столько времени, сколько необходимо.

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

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

...