Как устранить неполадку Windows Scheduled Task не работает?

В процессе развертывания нашего .net-приложения у меня есть около 20 запланированных задач, настроенных на сервере, все из которых в основном делают одно и то же: вызовите небольшое консольное приложение .net, которое извлекает данные из SQL db и отправляет его в веб-службу. Каждая задача вызывает отдельную копию приложения, причем каждая копия имеет другое значение идентификатора поиска в своем файле конфигурации.

Все, кроме двух задач, выполняются надежно каждую ночь. Две из задач кажутся случайным образом прерывать время от времени, и в настоящее время это тайна о том, почему. Когда они перестают работать, запланированный интерфейс задачи правильно показывает свою последнюю дату выполнения, что на один день или больше за другими задачами, которые продолжаются в запланированное время. Задачи, которые перестали работать, не запускаются снова самостоятельно, несмотря на то, что они указаны как запланированные для запуска каждую ночь. В журнале событий или в интерфейсе запланированной задачи ошибок нет. И вот самая странная часть для нас: если я вручную запускаю запланированную задачу, она работает нормально, она вызывает приложение консоли .net, и все заканчивается без аномалий. И затем он продолжает нормально функционировать в назначенное время, в течение нескольких дней или недель за раз, но только в конечном итоге терпит неудачу, казалось бы, не в синей. Кажется, обе задачи всегда начинают сбой в ту же ночь.

Ответ 1

Там есть столбец "Последний результат", который должен дать вам код, связанный с запущенной задачей (в нем не будет никаких данных об исключениях). 0 означает, что задача выполнена без ошибок. Что-нибудь еще вы можете посмотреть и посмотреть, почему задача не начнется. Если задача по-прежнему не работает, но вы по-прежнему видите 0 для последнего результата, это означает, что в вашем коде что-то сломано, но оно выходит изящно.

Ответ 2

Taskscheduler предполагает, что в 64-битных системах приложение должно быть 64 бит. Если это 32-разрядный запуск из 32-битной командной строки, то есть если вы хотите запустить c:\program files (x86)\Myprogram\Program.exe, сообщите о запуске taskcheduler:

  • % systemroot%\Syswow64\cmd.exe/C "c:\program files (x86)\Myprogram\Program.exe"

Это заставляет его запускаться из 32-битной командной строки и, следовательно, с 32-разрядной эмуляцией.

Ответ 3

Вы установили свойство "Начать в"?

Если для этих консольных приложений .NET необходим файл app.config или некоторые файлы, расположенные на их пути, вы должны установить свойство "Начать в" на "c:\your\app\path", иначе они начнутся, как если бы они были в системный каталог, и они не могут найти нужные файлы!

Ответ 4

Одна из причин невыполнения запланированных задач при объединении их с учетной записью пользователя без пароля: по умолчанию для запланированных задач запрещается запуск с пустым паролем. Если вы хотите запустить запланированную задачу из учетной записи без пароля, вам необходимо отключить системную переменную:

  • Перейдите в: Пуск > Администрирование > Локальная политика безопасности > Параметры безопасности > Локальные политики > Параметры безопасности
  • Выберите: "Учетные записи: ограничение использования локальной учетной записи пустых паролей только для входа в консоль"
  • Отключить эту переменную

Отказ от ответственности: не рекомендуется иметь учетные записи без пароля.

Ответ 5

В моем случае запланированная задача не будет выполняться, хотя он сказал, что последний прогон был успешным (0). Оказалось, что учетная запись пользователя Windows, которая выполняла задания, была заблокирована. Я понял это только потому, что попытался отредактировать существующую запланированную задачу, установить учетную запись пользователя в один и тот же, а затем нажать "ОК", и это дало мне ошибку в блокировке учетной записи.

Ответ 6

Я нашел эту очень полезную ссылку :https://windowsreport.com/windows-scheduled-tasks-not-running/ для тщательной отладки во многих случаях.

В моем случае учетная запись пользователя, для которой был настроен планировщик, была заблокирована, что остановило выполнение запланированных задач без каких-либо журналов или проблем с отчетами.

enter image description here

Ответ 7

Может, они повесили и все еще бежали?

Вы можете щелкнуть на дополнительном меню и выбрать запись в меню для просмотра журнала, затем блокнот откроет файл журнала из планировщика задач

Ответ 8

Я нашел эту страницу полезной, когда я пытался справиться с ошибкой. Запланированная задача:
http://support.microsoft.com/kb/308558

Выберите View- > Details, чтобы отобразить дополнительную информацию, такую ​​как Last Run Time и Status, и эта страница дала мне смысл кода состояния/ошибки:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381(v=vs.85).aspx

Ответ 9

Ответ на следующий вопрос SO также может быть очень важен для людей, читающих этот вопрос (но, NB, он описывает только одну возможную конкретную проблему с запланированными задачами, и я считаю, что ни один из этих вопросов не является дубликатом другого):

Почему моя запланированная задача обновляет свое "последнее время выполнения" правильно и дает "последний результат выполнения" из "(0x0)" , но все еще не работает?

Резюме ответа, данного на этот другой вопрос, заключается в том, что в запланированных задачах Windows 2012 не отображаются правильные переменные среды, включая PATH, для учетной записи, для которой задача запускается как.

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