问题

问题

问题

由于对 Windows Server 2003 的支持将于 7 月 14 日终止,我们将所有计划任务迁移至 Windows 2008 R2 服务器。

我们使用 Microsoft (MS) Access 2003(mdb) 数据库来处理各种后端流程,以补充用户和客户与我们系统的交互。

该问题的原因是 MS Access 内部的后端进程之一在用户未登录时拒绝打印。

后端进程填充临时表,该表稍后用于填充要打印的报告。此报告包含嵌入式查询、链接图像和已保存的默认打印机。

执行计划任务的用户是域用户。

我们的猜测可能是什么

会话 0 隔离- Access 会弹出一个非常小的打印窗口,显示您当前位于第 N 页中的第 X 页。此窗口无法交互。我觉得这可能是罪魁祸首,但我们尝试过的所有方法都无法阻止它。

我们尝试过的

  1. 在系统配置文件下创建桌面文件夹
  2. 确保用户是具有提升权限的本地管理员
  3. 登录后手动运行(有效)
  4. 创建应用程序的微型版本,执行打印作业的小样本。
  5. 设置计划任务在用户登录或未登录时运行。无论如何,MS Access 数据库中的其他进程仍会运行,并且我们会得到未打印进程的空报告。

当前的解决方法

我们保持域用户登录状态。

答案1

如果您打印到会话打印机,则很容易出现此问题。

HKEY_Current_User\Printers\Connections(会话打印机)

对比

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers(本地打印机)

任何通过网络共享安装的打印机都属于该类别。请使用安装了本地 tcp/ip 队列的打印机重试,该打印机将在整个系统范围内可用。

答案2

Elias,你查看了计划任务并选中了“无论用户是否登录都运行”复选框吗?你的问题听起来好像没有选中,所以当任务尝试运行时它无法运行。

答案3

听起来好像进程运行时打印机本身没有被检测到。您是否尝试添加一些调试代码以输出到文件并查看它在哪里被捕获?我发现在 VBA 中挂起的进程不会在事件查看器中生成太多信息,并且通常需要在代码中进行更多错误捕获。

我已经看到了会话 0 隔离问题,并且有解决方法,但我遇到的所有示例都与 Excel 有关。

以下是对 Session 0 所受影响的解释。

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

答案4

如果将 UAC 设置为最低设置,情况是否会改善?为此,单击“开始”,然后单击“运行”在运行框/提示符中键入 msconfig,然后单击“确定”单击“工具”选项卡单击“更改 UAC 设置”,然后单击“启动”将滑块拖到窗口底部确定并重新启动服务器

迁移任务时,您是否重新创建了任务?在 2003 和 2008 之间迁移任务的一个好方法是打开 2008 上的任务计划程序,连接到 2003 服务器,然后导出任务。然后,您可以将任务计划程序指向回 2008 服务器并导入任务。如果任务运行时结果为 0x0,我会说问题出在计划任务本身之外。

您能否确认发送测试页时打印机会打印?如果您还没有这样做,比较新旧服务器上的打印机设置可能是一个好主意。

相关内容