Назад | Перейти на главную страницу

Windows 2008 R2 не печатает из запланированного задания

Проблема

Поскольку 14 июля прекращается поддержка серверов Windows 2003, мы переносим все запланированные задачи на сервер Windows 2008 R2.

Мы используем базу данных Microsoft (MS) Access 2003 (mdb) для обработки различных внутренних процессов, которые дополняют взаимодействие пользователей и клиентов с нашей системой.

Один из внутренних процессов в MS Access, причина этого вопроса, отказывается печатать, когда пользователь не вошел в систему.

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

Пользователь, выполняющий запланированные задачи, является пользователем домена.

Что мы предполагаем, это могло быть

Сессия 0 Изоляция - В Access есть очень маленькое окно печати, которое показывает, что вы находитесь на странице X из N. С этим окном нельзя взаимодействовать. Я чувствую, что это может быть виновником, но все, что мы пробовали, не помогло остановить это.

Что мы пробовали

  1. Создана папка на рабочем столе в системном профиле
  2. Убедитесь, что пользователь является локальным администратором с повышенными привилегиями.
  3. Запуск вручную при входе в систему (это работает)
  4. Создание миниатюрной версии приложения, которое выполняет небольшой образец задания на печать.
  5. Установка запланированной задачи для запуска вне зависимости от того, авторизован пользователь или нет. Тем не менее, другие процессы в базе данных MS Access все еще работают, и мы получаем пустой отчет для процесса, который не печатается.

Текущее решение

Мы сохраняем авторизацию пользователя домена.

Эта проблема может легко возникнуть, если вы печатаете на сеансовом принтере.

HKEY_Current_User \ Printers \ Connections (сеансовые принтеры)

против

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Print \ Printers (локальные принтеры)

Любой принтер, установленный через общий сетевой ресурс, попадет в эту категорию. Повторите попытку с принтером, установленным с локальной очередью TCP / IP, этот принтер будет доступен для всей системы.

Элиас, вы посмотрели на запланированное задание и поставили галочку напротив пункта «запускать, вне зависимости от того, вошел ли пользователь в систему или нет»? Похоже, ваши проблемы не проверены, поэтому, когда задача пытается запустить, она не может.

Если вы установите для UAC самое низкое значение, улучшит ли это ситуацию? Для этого нажмите «Пуск», затем «Выполнить». Введите msconfig в поле / запрос запуска и нажмите «ОК». Щелкните вкладку «Инструменты». Нажмите «Изменить параметры контроля учетных записей» и затем нажмите «Запуск». Перетащите ползунок вниз. ОК, окна и перезапустите сервер.

При переносе задачи вы ее воссоздали? Отличный способ переноса задач между 2003 и 2008 - открыть планировщик задач в 2008, подключиться к серверу 2003 и затем экспортировать задачи. Затем вы можете указать планировщику задач обратно на сервер 2008 и импортировать задачи. Если задача выполняется с результатом 0x0, я бы сказал, что проблема не в самой запланированной задаче.

Можете ли вы подтвердить, что принтер печатает при отправке тестовой страницы? Возможно, стоит сравнить настройки принтера на старом и новом серверах, если вы еще этого не сделали.

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

Я видел проблему изоляции сеанса 0, и есть обходные пути, но все примеры, с которыми я сталкивался, были связаны с Excel.

Вот объяснение того, на что влияет сеанс 0.

https://msdn.microsoft.com/en-us/library/windows/hardware/dn653293%28v=vs.85%29.aspx