Error: "Unable to load client print control" en Reporting Services

 

¿Te has encontrado con el siguiente error últimamente al intentar imprimir un informe en Reporting Services?

No se puede cargar el controlador de impresión

(En Ingles: Unable to load client print control)

Es muy seguro que este error haya sido producido por la instalación del siguiente aviso de seguridad: 956391, que actualiza killbits, una versión antigua del control RSClientPrint por una vulnerabilidad encontrada.

Aviso de seguridad de Microsoft: Actualización de seguridad acumulativa para ActiveX

http://support.microsoft.com/?id=956391

Para solucionarlo, podéis instalar el último Cumulative Update 10 de SQL Server, que lo podéis conseguir del siguiente enlace:

Cumulative update package 10 for SQL Server 2005 Service Pack 2

http://support.microsoft.com/kb/956854/en-us

Si utilizaseis el Report Viewer desde una aplicación web, CRM o SharePoint, os aconsejaría los siguientes pasos:

1. Primero verificar la versión del Report Server. Debería de ser 9.00.3073 or 9.00.3282.

Si no, actualizar el Report Server:

Security Update for SQL Server 2005 Service Pack 2 (KB954607)

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=5148b887-f323-4adb-9721-61e1c0cfd213

2. Ahora comprobar la versión del control ReportViewer (en caso de utilizarlo)

Para ello, abrir el informe en la máquina cliente, hacer clic derecho en el informe y seleccionar “View Source”.

Encontrar la siguiente línea:

<script src="http://blogs.msdn.com/TestRSClientPrintReportViewer/Reserved.ReportViewerWebControl.axd?OpType=Resource&amp;Version=X.Y.ZZZZ

3. Ahora, Si el control es de tipo “Reserved.ReportViewerWebPart.axd” entonces tiene que ver con SharePoint.

Hay un fix para esto en el siguiente enlace:

Microsoft SQL Server 2005 Reporting Services Add-in for Microsoft SharePoint Technologies

http://www.microsoft.com/downloads/details.aspx?FamilyID=1e53f882-0c16-4847-b331-132274ae8c84&displaylang=en

Si el control es de tipo “Reserved.ReportViewerWebControl.axd” vamos bien.

Tenemos 2 versiones mayores diferentes: 8.00.50727 y 9.00.XXXX.

Si ves la versión 8.00.50727 esto significa que está viendo informes desde CRM o utilizando el control ReportViewer desde una aplicación web.

Si ves la versión 8.00.50727 y la versión es anterior a 8.00.50727.1843 entonces se debería de instalar el siguiente fix en el servidor ReportServer o en el servidor de CRM:

Microsoft Report Viewer Redistributable 2005 Service Pack 1

http://www.microsoft.com/downloads/details.aspx?familyid=82833F27-081D-4B72-83EF-2836360A904D&displaylang=en

Si ves la versión es 9.00.XXXX o 9.0.XXXX esto significa que está viendo informes desde Report Manager, Report Server o una aplicación web desde un Visual Studio VS 2008.

En ese caso se tundra que instalar el siguiente fix en la máquina del report server:

Microsoft Report Viewer 2008 SP1 Redistributable

http://www.microsoft.com/downloads/details.aspx?FamilyID=bb196d5d-76c2-4a0e-9458-267d22b6aac6&DisplayLang=en

Esto actualizará a la versión 9.0.30729.1 del control Report Viewer.

Para Reporting Services 2000

Hara falta instalar la siguiente actualización de seguridad en el servidor de Reporting Services

Security Update for SQL Server Reporting Services 2000 Service Pack 2

http://www.microsoft.com/downloads/details.aspx?familyid=5F9E7F78-7439-414B-A9DC-A779B89427DB&displaylang=en

Y la siguiente version del Report Viewer redistributable en la máquina donde está la aplicación web (ó la máquina de CRM):

Microsoft Report Viewer Redistributable 2005 Service Pack 1

http://www.microsoft.com/downloads/details.aspx?familyid=82833F27-081D-4B72-83EF-2836360A904D

La siguiente actualización de seguridad debería de estar instalada en todas las máquinas cliente:

Microsoft Security Advisory: Update Rollup for ActiveX Kill Bits

http://support.microsoft.com/kb/956391

He seguido los pasos arriba indicados y todavía me da el error al imprimir

Si aun así os seguís encontrando el error al imprimir el informe desde vuestra aplicación. Pudiera ser que la versión del control rsClientPrint en las máquinas cliente no fuera igual a la versión del servidor.

Una buena prueba sería que borraseis la el control que tenéis en la máquina cliente y permitáis que se descargue de nuevo desde el servidor. Esto se hace automáticamente al imprimir el informe, la primera vez que el control se va a utilizar o cuando la versión en el servidor cambia. Nótese que los usuarios necesitan tener permisos para descargar controles Active X.

Los pasos a seguir en la máquina cliente serían:

1. Desregistrar RSClientPrint.dll en c:\windows\system32 folder

2. Borrar todos los ficheros RSClientPrint.dll y RSClientPrint*.rll del directorio

c:\windows\system32 .

3. Ir a Windows\Downloaded Program Files y borrar la clase RSClientPrint 2005

4. Configurar la intranet de IE para que pida credenciales para descargar controles ActiveX

5. Ejecutar el informe y hacer clic en el botón de impresión.

6. Instalar el plugging ActiveX cuando lo pida

7. Confirmar que la clase RSClient 2005 se ha descargado en Windows\Downloaded Program Files

8. Si os muestra un mensaje que empieze por “An error occurred during printing (0x80070006)”, habrá que reiniciar la maquina y repetir los pasos

Una manera de comprobar la versión del control rsClientPrint en la máquina cliente sería (tiene que ser la misma versión que la del servidor)

· Abrir la ventana de comandos

· navegar a c:\windows\downloaded program files

· Copiar rsclientprint.dll a un directorio temporal, por ejemplo c:\temp

· Abrir el Explorador de Windows

· Navegar al directorio c:\temp

· En el menu contestual comprobar la versión

· Borrar RSClientPrint.dll del directorio temp

Maria Esteban

Ingeniero de Soporte de Reporting Services