[SSRS] [SQL Server 2008 以降のバージョン] ReportViewer のレポート表示後、印刷ボタン(アイコン)を押下すると「クライアントの印刷コントロールを読み込めません。」のエラーメッセージが表示され、印刷できない。

 

山崎 実久
SQL Developer Support Engineer

以前、本ブログの “Reporting Services のレポートで印刷を行うと「クライアントの印刷コントロールを読み込めません。」のエラーが発生する” の記事で、Reporting Services のレポートで印刷時の下記エラーの発生パターンおよび回避方法をご案内しました。

--------
クライアントの印刷コントロールを読み込めません。
--------

Reporting Services のレポートで印刷を行うと「クライアントの印刷コントロールを読み込めません。」のエラーが発生する” の記事で、上記エラーが発生するパターンの1つとして、Reporting Services の印刷時、RSClientPrint  という ActiveX コントロールがクライアントにインストールできないため、このエラーが発生する場合があることをお伝えしました。

本 blog では、SQL Server 2008 以降の環境において、RSClientPrint という ActiveX コントロールがクライアントにインストールできない場合について、下記 2 点を補足説明します。

・RSClientPrint の ActiveX コントロールがクライアントにインストールされているか確認する方法
・対処方法

[RSClientPrint の ActiveX コントロールがクライアントにインストールされているか確認する方法]

事象が発生するクライアントマシンにて C:\Windows\Downloaded Program Files\ 配下の RSClientPrint.dll のファイルが存在しているか否かで、判断できます。
RSClientPrint.dll のファイルが存在しない場合、RSClientPrint の ActiveX コントロールがクライアントにインストールされていないと判断できます。その場合、以下の対処方法に記載の内容を確認します。

[インストールできない原因についての確認方法]

事象が発生するクライアントマシンにて RSClinetPrint ActiveX コントロールをインストールできない一般的な原因は以下となります。以下 2 点に該当しないか確認します。

1. 印刷を行っているユーザーの権限が不足している。(PowerUser 以上の権限が必要です。)
2. IE の セキュリティ設定で、ActiveX コントロールのダウンロード等が無効となっている。 ※

※ 2 について、IE の設定の確認方法の詳細は以下となります。

事象が発生するクライアントマシンにて確認手順
------------------------------------------------------
[インターネットのオプション] - [セキュリティ] の下記 4 つの項目について、それぞれ以降に記載のURL を参照いただき、ActiveX に関する設定を確認します。

  [インターネット]
  [ローカルイントラネット]
  [信頼済みサイト]
  [制限付きサイト]

+ ActiveX に関する設定を紹介しているサイト

  Internet Explorer の ActiveX に関する設定を調整する
  https://windows.microsoft.com/ja-jp/windows/help/genuine/ie-activex

上記、1, 2 を確認後、該当しない場合は、以下を事象が発生するクライアントマシンにて実施ください。以下の手順は SQL Server 2008 の既定インスタンスについての例となります。
SQL Server 2008 以降の場合は、 1) の cab ファイルの場所を SQL Server のバージョンに合わせ変更します。

例 ) 対処方法
----------------
1) RSClientPrint の cab ファイルの中身をクライアントの任意のディレクトリ (例:c:\temp) にコピーし展開します。
RSClientPrint の cab は、既定では、対象の SQL Server 稼働マシン上の、以下のフォルダ配下にあります。

C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer\bin

SQL Server 2008 Reporting Servicesの RSClientPrint の cab は以下の 3 種類があります。

・RSClientPrint-ia64.cab
・RSClientPrint-x64.cab
・RSClientPrint-x86.cab

これは、レポートにアクセスを行うブラウザによって使用する cab が異なります。
32bit 環境の場合は「RSClientPrint-x86.cab」をコピーし展開します。
また、x64 環境であっても、IE を 32bit モードで起動する場合には、上記と同様に「RSClientPrint-x86.cab」をコピーし展開します。

2) 印刷を行うクライアントマシン上にて、管理者権限でコマンド プロンプト(CMD.EXE) を起動して、以下のコマンドを入力します。

Regsvr32 c:\temp\rsclientprint.dll

-> 成功した場合、以下のメッセージが表示されます。
c:\temp\rsclientprint.dll の DLLRegisterServer は成功しました。

※ 1) で展開した cab ファイルの中身のうち、「rsclientprint.dll」を指定します。
※ x64、IA64の cab を使用する場合には、下記のように「rsclientprint64.dll」を指定します。
Regsvr32 c:\temp\rsclientprint64.dll

3) レポートに接続し、印刷ボタンをクリックし印刷可能か確認します。

以上となります。参考になりましたら幸いです。