Trabalhos presos na fila de impressão no servidor de impressão

3

Eu tenho uma máquina Server 2003 atuando como um servidor de impressão para cerca de 20 impressoras. Há uma impressora com a qual estamos tendo problemas e ela tem 104 documentos em sua fila.

Eu tentei o "Cancelar todos os documentos" e tentei cancelar manualmente documentos individuais sem sucesso.

O estado dos trabalhos de impressão "Apagando - Enviado para impressora" sob o status deles. Está nesse estado há cerca de duas horas.

Eu não acredito que a reinicialização do spool seja uma opção sem afetar as outras impressoras e que tenhamos Impressora para uma aplicação específica que não seja compatível com a impressão, na qual não posso perder os trabalhos.

    
por Carl 11.06.2010 / 16:59

2 respostas

0

Reiniciar o spooler de impressão geralmente não descarta os trabalhos de impressão, apenas deixa de aceitar novos. Os usuários finais perceberão, mas não será tão ruim quanto deixar um trabalho de impressão em silêncio. Em geral, eu diria que é seguro reiniciar o serviço na hora.

Mais importante, gostaria de compartilhar isso com você:

Ocasionalmente, tive experiência com um trabalho de impressão corrompido em uma fila de impressão. Nesses casos, notei

a. O spooler de impressão não permanecerá iniciado enquanto o trabalho de impressão corrompido estiver presente e a impressora de destino estiver no mesmo. b. o spooler de impressão não permitirá que você exclua o trabalho corrompido através da GUI se o spooler for interrompido c. a impressora não imprimirá nenhum outro trabalho até que o trabalho corrompido seja concluído ou excluído.

Para corrigir isso, você precisa

  1. Desligue a impressora fisicamente
  2. iniciar / reiniciar o spooler de impressão
  3. excluir o trabalho de impressão corrompido
  4. ligue a impressora

Se você não fizer 1-4 exatamente nessa ordem, ficará preso em um loop infinito lutando com a-c.

Não posso prometer a você que sua situação corresponde a essa experiência, mas acho que vale a pena considerar o comportamento observado e as implicações de como o processo de impressão / spool de impressão entrega as coisas.

edit: Ao contrário, use a manipulação de Evan dos arquivos de spool. Você pode usar a fila de impressão no Windows (Iniciar - Configurações - Impressoras ou Iniciar - Impressoras) e excluir o trabalho da fila de impressão usando o menu Documento - opção Cancelar.

A chave está em sua maneira de lidar com isso, o serviço de spool tem que ser interrompido ao lidar com ele do meu jeito que o spooler precisa ser iniciado. Se você tiver acesso físico à impressora e for conveniente desativá-la, poderá usar meu método. Se você não tem acesso à impressora física, pode usar o método dele.

    
por 11.06.2010 / 17:39
7

Pular o serviço de spooler é a única opção viável de que conheço. Na minha experiência, alguns trabalhos ficam "presos" em uma fila de modo "severamente" a ponto de exigir a parada do servidor spooler, limpando os arquivos que representam as tarefas da pasta% SystemRoot% \ System32 \ Spool \ Printers e reiniciando o serviço de spooler.

Você não perderá nenhum trabalho já enfileirado para outras impressoras fazendo o serviço de spooler (você mesmo pode demonstrar isso em outro servidor ou cliente - pausar uma impressora, colocar alguns trabalhos na fila e parar / reinicie o serviço do spooler), mas se você achar que precisa seguir o caminho para excluir os arquivos de trabalho do diretório de spool, será difícil localizá-los em meio aos outros arquivos em spool para os trabalhos que você pretende manter.

(Como um aparte: Microsoft poderia fazer um lote de enhancemnet do serviço de spooler de impressão, IMO, para aliviar situações como você está vendo. O serviço de spooler de impressão enfraqueceu em um estado de relativamente pouco aprimoramento nos últimos lançamentos do Windows. A impressão não é atraente, mas geralmente é essencial para os negócios.)

Editar:

Cada trabalho de impressão é representado no diretório de spool por um arquivo ".SPL" (contendo os dados do trabalho de impressão em formato EMF ou raw) e um arquivo ".SHD" correspondente, contendo informações "cabeçalho" sobre o trabalho. Este arquivo de informações de cabeçalho contém os detalhes sobre qual impressora o trabalho está sendo enviado.

A exclusão do par correspondente dos arquivos "SPL" e "SHD" de um determinado trabalho de impressão exclui efetivamente esse trabalho.

Infelizmente, o formato do arquivo ".SHD" é oficialmente não documentado (consulte link para ver engenharia reversa documentação), então descobrir "qual arquivo é qual" no diretório de spool e excluir apenas os trabalhos de impressão "corruptos" é muito difícil, na melhor das hipóteses. Pelo que vejo, o nome da fila de impressão de destino está nesse arquivo "SHD" como uma string de código, então eu suponho que seria possível montar um script usando a linha de ferramentas de linha de comando "strings" e "findstr" para rastejar através de todos os arquivos ".SHD" para encontrar trabalhos destinados à impressora "problema" e excluí-los, deixando os trabalhos vinculados a outras impressoras intactas.

Qualquer manipulação dos arquivos de spool deve ser feita com o serviço de spooler parado porque, enquanto ele está em execução, os arquivos estão bloqueados.

    
por 11.06.2010 / 17:31