作业卡在打印服务器上的打印队列中

我有一台Server 2003计算机作为大约20台打印机打印服务器。 有一个打印机,我们有问题,它有104个文件在队列中。

我尝试了“取消所有文档”,并尝试手动取消单个文档,但没有成功。

打印作业状态为“正在删除 – 已发送到打印机”。 它已经在这个状态大约2个小时。

我不相信重新启动后台打印机是一个选项,而不影响其他打印机,我们有一个特定的非Windows打印友好的应用程序,我不能放松的工作,保持打印机。

重新启动打印后台处理程序通常不会放弃打印作业,只是停止接受新的打印作业。 最终用户会注意到,但不会像沉默地丢弃打印作业一样糟糕。 一般而言,我会说在飞行中重新启动服务是安全的。

更重要的是我想和你分享一下:

偶尔我有打印机队列中损坏的打印作业的经验。 在这些情况下,我注意到了

一个。 只要存在损坏的打印作业并打开目标打印机,打印后台处理程序就不会保持启动状态
湾 如果假脱机程序停止,则打印假脱机程序不会让您通过GUI删除损坏的作业
C。 在损坏的作业完成或删除之前,打印机将不会打印任何其他作业。

要解决这个问题,你必须

  1. 物理closures打印机
  2. 启动/重新启动打印后台处理程序
  3. 删除损坏的打印作业
  4. 打开打印机

如果你不按照这个顺序做1-4,你会陷入一个与ac交战的无限循环中。

我不能向你保证,你的情况符合这个经验,但我认为它的价值考虑到了观察到的行为,以及对印刷/打印后台处理过程的影响。

编辑:在相反采取埃文的假脱机文件的操纵。 您可以使用Windows上的打印队列(开始 – 设置 – 打印机或开始 – 打印机),并使用文档菜单 – 取消选项从打印队列中删除作业。

关键是在处理它的方式,假脱机服务必须停止处理它我的方式必须启动假脱机程序。 如果您具有对打印机的物理访问权,并且方便将其closures,则可以使用我的方法。 如果您无法访问物理打印机,则可以使用他的方法。

popup假脱机服务是我意识到的唯一可行的select。 根据我的经验,某些作业在队列中“卡住”,所以“严重”,需要停止假脱机程序服务器,清除代表作业的文件不在%SystemRoot%\ System32 \ Spool \ Printers文件夹中,然后重新启动假脱机服务。

通过popup假脱机程序服务,您不会丢失已经排队等待其他打印机的任何作业(您可以在另一台服务器或客户机上自己演示此程序 – 暂停打印机,将某些作业放入队列中,然后停止/重新启动假脱机程序服务),但如果您发现必须从spool目录中删除作业文件的path,则您将很难在其他假脱机文件中find您打算保留的作业。

(另外,微软可以做很多打印假脱机程序服务的增强functionIMO,以缓解你所看到的情况。打印假脱机程序服务在最近的几个Windows版本中都处于相对较小的增强状态。打印不是很性感,但通常是关键业务。)

编辑:

每个打印作业在假脱机目录中都以“.SPL”文件(包含EMF或原始格式的打印作业数据)和一个匹配的“.SHD”文件(包含有关作业的“标题”信息)表示。 该头文件信息文件包含关于哪个打印机被发送到的详细信息。

为给定的打印作业删除匹配的“SPL”和“SHD”文件对将会删除该作业。

不幸的是,“.SHD”文件的格式没有正式logging(有关反向工程文档,请参见http://www.undocprint.org/formats/winspool/shd ),所以要确定“spool”是哪个文件目录并且只删除“损坏的”打印作业是非常困难的。 从我所看到的情况来看,目标打印队列的名称是作为uncodestring存储在“SHD”文件中的,所以我猜想可以使用命令行工具“strings”和“findstr”拼凑一个脚本来拼凑脚本通过所有的“.SHD”文件find指定给“问题”打印机的作业,并删除它们,同时保留不打印其他打印机的作业。

任何假脱机文件的操作都必须在假脱机程序服务停止的情况下完成,因为在运行时,文件被locking。