Windows 2008 R2 не печатает из запланированной задачи
проблема
Поскольку 14 июля прекращается поддержка для серверов Windows 2003, мы переносим все наши запланированные задачи на сервер Windows 2008 R2.
Мы используем базу данных Microsoft(MS) Access 2003(mdb) для обработки различных внутренних процессов, которые дополняют взаимодействие пользователей и клиентов с нашей системой.
Один из внутренних процессов в MS Access, причина этого вопроса, отказывается печатать, когда пользователь не вошел в систему.
Внутренний процесс заполняет временную таблицу, которая позднее используется для заполнения отчета, который должен распечатываться. Этот отчет имеет встроенный запрос, связанные изображения и сохраненный принтер по умолчанию.
Пользователь, который выполняет запланированные задачи, является пользователем домена.
То, что мы предполагаем, это может быть
Сессия 0 Изоляция - Access имеет очень маленькое окно печати, которое показывает, что вы находитесь на странице X из N. С этим окном нельзя взаимодействовать. Я чувствую, что это может быть виновником, но все, что мы пробовали, не помогло остановить это.
Что мы попробовали
- Созданная папка Desktop под системным профилем
- Убедитесь, что пользователь является локальным администратором с повышенными привилегиями
- Запустите его вручную во время входа в систему (это работает)
- Создание миниатюрной версии приложения, которая делает небольшой образец задания на печать.
- Настройка запуска запланированной задачи, если пользователь вошел в систему или нет. Независимо от этого, другие процессы в базе данных MS Access все еще работают, и мы получаем пустой отчет для процесса, который не печатается.
Текущее решение
Мы ведем учетную запись пользователя домена.
4 ответа
Эта проблема может легко возникнуть, если вы печатаете на принтер сеанса.
HKEY_Current_User \ Printers \ Connections (сеансовые принтеры)
против
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\ Принтеры (локальные принтеры)
Любой принтер, установленный через сетевой ресурс, попадет в эту категорию. Пожалуйста, попробуйте снова с принтером, установленным с локальной очередью TCP / IP, этот принтер будет доступен для всей системы.
Элиас, ты посмотрел на запланированное задание и поставил флажок "запускать, вошел ли пользователь в систему или нет"? Ваши проблемы звучат так, как будто они не проверены, поэтому, когда задача пытается ее выполнить, она не может.
Если вы установите UAC на самое низкое значение, это улучшит ситуацию? Для этого нажмите кнопку "Пуск", затем "Выполнить" и введите "msconfig" в поле / приглашение "Выполнить" и нажмите кнопку "ОК". Щелкните вкладку "Инструменты". Нажмите "Изменить параметры UAC", а затем нажмите кнопку "Запуск". Перетащите ползунок в нижнюю часть окна "ОК" и перезапустите сервер.
Когда вы перенесли задачу, вы воссоздали задачу? Отличный способ переноса задач между 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