Как устранить неполадки запланированной задачи Windows, не запущенной? - PullRequest
11 голосов
/ 15 мая 2009

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

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

Ответы [ 8 ]

9 голосов
/ 15 мая 2009

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

4 голосов
/ 15 сентября 2013

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 голосов
/ 19 декабря 2014

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

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

1 голос
/ 14 мая 2017

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

1 голос
/ 14 января 2011

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

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

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

0 голосов
/ 28 сентября 2016

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

Почему моя запланированная задача корректно обновляет свое «Время последнего запуска» и выдает «Результат последнего запуска», равный «(0x0)», но на самом деле не работает?

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

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

0 голосов
/ 18 января 2012

Эта страница показалась мне полезной, когда я пытался найти способ справиться с плохим расписанием:
http://support.microsoft.com/kb/308558

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

0 голосов
/ 15 мая 2009

Может быть, они висели и все еще бегали?

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

...