Unable to load print control in ReportingService

低版本出现报表无法打印的问题(客户端无法加载打印控件)

SP2地址:

http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=4603c722-2468-4adb-b945-2ed0458b8f47

SP3地址:

http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=ae7387c3-348c-4faa-8ae5-949fdfbe59c4

Microsoft Report Viewer Redistributable 2008

http://www.microsoft.com/downloads/details.aspx?familyid=CC96C246-61E5-4D9E-BB5F-416D75A1B9EF&displaylang=en

 

Problem:

Unable to load client print control.

 

Cause:

This issue is seen when KB 956391 has been installed on the client.

 

Microsoft Security Advisory: Cumulative security update for ActiveX

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

 

This update killbits an older version of the RSClientPrint, due a vulnerability on it.

But for this update to work the report server must have been patched as well and perhaps also the ReportViewer control has to be updated.

 

You should leave KB956391 installed on the client machines and then check the below.

 

Resolution:

First check the report server version.

It must be 9.00.3073 or 9.00.3282.

 

If not, update the 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

 

 

Now check the version of the ReportViewer control.

You do this by having the customer open a report for viewing on a client machine.

Then have them right click on the report and select “View Source”.

 

Locate the line that looks like this:

 

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

 

Now, if the control type is “Reserved.ReportViewerWebPart.axd” then this is an issue with SharePoint.

The “Microsoft SQL Server 2005 Reporting Services Add-in for Microsoft SharePoint Technologies” has been updated to work with the new rsclientprint.dll.

Download center link:

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

 

 

If the control type is “Reserved.ReportViewerWebControl.axd” we should check the following:

We have 2 different major versions here: 8.00.50727 and 9.00.XXXX.

If you see version 8.00.50727 this means you are browsing reports from within CRM or using the ReportViewer control in a custom 2005 web application.

If you see version 8.00.50727 and the version is earlier than 8.00.50727.1843 then you should install the below on the ReportServer or on the CRM server:

 

Microsoft Report Viewer Redistributable 2005 Service Pack 1

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

 

If you see version 9.00.XXXX or 9.0.XXXX then you are browsing through Report Manager, Report Server or perhaps a customer web application built with VS 2008.

Then you should install the below on the report server:

 

Microsoft Report Viewer 2008 SP1 Redistributable

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

 

This will bring you up to version 9.0.30729.1 for the ReportViewer control.

 

After having updated the ReportViewer control you must issue an iisreset command so that the updated controls will take effect.

 

 

MORE

 

 

 

Due to the great confusion I perceive about this error and its possible causes and solutions, I decided to remove my 3 old posts that talked about this error and create a single and more complete posts that I hope helps you resolve all the possible causes of this error when trying to print reports in Reporting Services. 

 

“Unable to load client print control”

 

 

POSSIBLE CAUSES AND PROPOSED SOLUTIONS:

 

There could be 2 possible causes for this issue, very differnt from each other:

 

1. This error could be caused by a known update to the RSClientPrint control  (MS09-062): http://support.microsoft.com/kb/971023

There are some fixes already built for this (1. To fix direct accesses to Report Manager 2. To fix applications that access Report Manager like CRM in your case). See bellow:

 

1. To fix accesses to Report Manager you should install the following in the Report Server machine:

 

Service Pack 3 de Microsoft SQL Server 2005

http://www.microsoft.com/downloads/details.aspx?displaylang=es&FamilyID=ae7387c3-348c-4faa-8ae5-949fdfbe59c4

 

and

 

Cumulative update package 8 for SQL Server 2005 Service Pack 3

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

 

2. To fix accesses to the Reporting Services from an application (like CRM, SharePoint or a web application) you would need to install the fixes bellow. They will be different depending on the version of the Report Viewer control:

 

To check the version of the ReportViewer control.

 

1. Open a report for viewing on a client machine
2. Then right click on the report and select “View Source”.

Locate the line that looks like this:
<script src="http://blogs.msdn.com/TestRSClientPrintReportViewer/Reserved.ReportViewerWebControl.axd?OpType=Resource&amp;Version=X.Y.ZZZZ

a) If the control type is “Reserved.ReportViewerWebPart.axd” then this is an issue with SharePoint.


The “Microsoft SQL Server 2005 Reporting Services Add-in for Microsoft SharePoint Technologies” has been updated to work with the new rsclientprint.dll.

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


b) If the control type is “Reserved.ReportViewerWebControl.axd” we should check the following:


We have 2 different major versions here: 8.00.50727 and 9.00.XXXX.
If you see version 8.00.50727 this means you are browsing reports from within CRM or using the ReportViewer control in a custom 2005 web application.
If you see version 8.00.50727 and the version is earlier than 8.00.50727.1843 then you should install Report Viewer Redistributable 2005 Service Pack 1 on the ReportServer or on the CRM server or machine where the web application is running:

Microsoft Report Viewer Redistributable 2005 SP1 (Full Installation)

http://www.microsoft.com/downloads/details.aspx?familyid=E7D661BA-DC95-4EB3-8916-3E31340DDC2C&displaylang=en

 

and

 

Report Viewer Redistributable 2005 Service Pack 1 GDIPLUS.DLL Security Update

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=0dfaf300-2b53-4678-a779-0d805ddfe538

 

c) If you see version 9.00.XXXX or 9.0.XXXX then you are browsing through Report Manager, Report Server or perhaps a custom web application built with VS 2008.
Then you should install the below on the report server and in the machine where the web application is running:

 

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

 

And

 

Report Viewer Redistributable 2008 Service Pack 1 GDIPLUS.DLL Security Update

http://www.microsoft.com/downloads/details.aspx?familyid=6aaa74bd-a46e-4478-b4e1-2063d18d2d42&displaylang=en


After having updated the ReportViewer control you must issue an iisreset command so that the updated controls will take effect.

 

 

2. Or it could be a permissions issue:

 

When trying to print reports from Reporting Services, the RSClientPrinty control needs to be downloaded and installed to the client machines. This is done automatically the first time a user tries to print a report and the users need to be administrators or Power Users in order to be able to download the control though the web.

 

Users that are not administrators nor Power Users don’t have permissions to deploy of the RsClientPrint control to IE from the server (not allowed installing ActiveX components)

 

This happens the first time you run a report or after installing some cumulative updates or service packs that modifies this control and needs to be redeployed. Each time the client clicks on the print button; there is a round trip to the server to check if the client has the latest version.

 

The following links explains that you need administrator permissions in order to download the print control to download it from the server:

http://msdn.microsoft.com/en-us/library/ms159190(SQL.90).aspx

 

 

2 POSSIBLE ALTERNATIVES:

 

Deploy the control manually:

 

If the users weren’t administrators or power users, the issue could be resolved by deploying the files manually:

 

1.       Go to C:\Program Files\Microsoft SQL Server\MSSQL.x\Reporting Services\ReportServer\bin on the report server and copy the rsclientprint.cab file

2.       Extract the files from the rsclientprint.cab file.

3.       Copy all the files to the client computer to Windows\Downloaded Program Files (you might need to do it using the command windows)

c:\print\RSClientPrint.dll

c:\print\rsclientprint.inf

c:\print\RsClientPrint_1028.rl

c:\print\RsClientPrint_1031.rl

c:\print\RsClientPrint_1033.rl

c:\print\RsClientPrint_1036.rl

c:\print\RsClientPrint_1040.rl

c:\print\RsClientPrint_1041.rl

c:\print\RsClientPrint_1042.rl

c:\print\RsClientPrint_2052.rl

c:\print\RsClientPrint_3082.rl 

4.       Register RSClientPrint.dll by opening a command line (Start->Run) regsvr32 [path]RSClientPrint.dll 

 

Or creating a script to install the control using “Run As”

 

“Run As” is a tool that allows running programs as a different user than the currently logged-on user. It is described in the article:

 

How to enable and use the "Run As" command when running programs in Windows

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

 

Steps to create the script would be:

1.  On a Domain Controller, create a share with the appropriate rights for a "simple user"
2.  On this share create a file called runas.vbs with the following code:

'
'RunAs Helper
'Syntax: runas.vbs <username> <command>
'
set args=wscript.arguments
username = args(0)
' Enter the password in the variable pass
pass = "administrator password"
'Get the command arguments
for i=1 to args.count - 1
command = command & args.item(i) & " "
Next
set shell=wscript.createobject("Wscript.shell")
'Run runas.exe
shell.run "runas.exe /user:" & username & " """ & command & """",2,FALSE
'Wait for runas.exe to load, this time could be shorter, but is set to 1000
'to be safe
wscript.sleep(1000)
'Send the password and hit enter
shell.sendkeys pass & "{ENTER}"
wscript.sleep(1000)


3. Extract the dll and inf files from your ActiveX on the share.
4. Download the Windows Script Encoder, available on

http://www.microsoft.com/downloads/details.aspx?FamilyId=E7877F67-C447-4873-B1B0-21F0626A6329&displaylang=en

 

and encrypt the original vbs file: original_vbs_file.vbs vbs_encrypted_file.vbe

The script encoder is a command-line tool that allows a scriptwriter to protect the contents of a script from unauthorized copies or modifications while ( at the same time ) allowing the script to run.

 

       5- Create a logonscript with the following instructions:


net use z: \\server\share <file://\\server\share> 'Map the share to a local drive.

 

The files need to be local so as to be installed..


z:\vbs_encrypted_file.vbe domain\admin rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 z:\rapport.inf
z:\vbs_encrypted_file.vbe domain\admin rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 z:\vbs.inf
net use z: /d 'Delete the mapping

 

 

I hope this helps,

 

Maria Esteban

Reporting Services Support Engineer

 

 

posted @ 2010-10-20 23:06  彷徨......  阅读(990)  评论(0编辑  收藏  举报