SQL Server 2012 Data Tools でカスタム拡張機能を読み込むときに、エラー (選択したデータ拡張機能 <Custom 拡張機能名> がインストールされていないか、読み込めません)

この記事は、SQL Server 2012 Data Tools のレポート サーバー プロジェクトでカスタム拡張機能を読み込もうとしたときにエラー メッセージが表示される問題を解決するのに役立ちます。

適用対象: SQL Server 2012 Enterprise、SQL Server 2012 Business Intelligence、SQL Server 2012 Developer、SQL Server 2012 Standard、SQL Server 2012 Web
元の KB 番号: 2750044

症状

次のシナリオを考えてみましょう。

  • カスタム Reporting Services データ処理拡張機能を開発します。
  • カスタム データ処理拡張機能アセンブリは、Microsoft.ReportingServices.Interfaces.dll ファイルを参照します。 このファイルは、Microsoft SQL Server 2005 Reporting Services、SQL Server 2008 Reporting Services、または SQL Server 2008 R2 Reporting Services に含まれています。
  • Microsoft SQL Server 2012 に SQL Server Data Tools (SSDT) をインストールします。
  • SSDT を使用して、データ処理拡張機能アセンブリをデプロイします。
  • Business Intelligence テンプレートに基づく新しいレポート サーバー プロジェクトを作成し、新しいデータ ソースを追加するためにカスタム データ処理拡張機能を選択します。

この場合に、次のようなエラー メッセージが表示されます。

データ ソース '<Data ソース名>' に接続できません。 選択したデータ拡張機能 '<Custom Extension Name>' がインストールされていないか、読み込めません。 選択したデータ拡張機能がローカル レポートの場合はクライアントにインストールされ、パブリッシュされたレポートの場合はレポート サーバーにインストールされていることを確認します。

  • データ ソース名 はデータ ソース名のプレースホルダーであり、 Custom 拡張機能名 はカスタム拡張機能名のプレースホルダーです。

  • 任意の SQL Server Reporting Services (SSRS) レポートにカスタム拡張機能を読み込み、SSRS Web サービスまたは Web インターフェイスを介してレポートを実行すると、カスタム拡張機能が正常に実行されます。

  • この問題は、データ処理拡張機能に限定されるわけではありません。 カスタム拡張機能が、SQL Server 2005 Reporting Services、SQL Server 2008 Reporting Services、または SQL Server 2008 R2 Reporting Services に含まれているMicrosoft.ReportingServices.Interfaces.dll ファイルを参照すると、同様のエラーが発生することがあります。

原因

この問題は、SSDT セットアップ プロセスのバグが原因で発生します。

SSDT がインストールされると、 devenv.exe.config ファイルと PreviewProcessingService.exe.config ファイルに次の正しくないエントリが追加されます。

<dependentAssembly>
    <assemblyIdentity name="Microsoft.ReportingServices.Interfaces" publicKeyToken="89845dcd8080cc91" culture="neutral"/>
    <bindingRedirect oldVersion="9.0.242.0" newVersion="10.0.0.0"/>
</dependentAssembly>

カスタム拡張機能がアセンブリ バージョンが 9.0.242.0 のMicrosoft.ReportingServices.Interfaces.dll ファイルを参照している場合、SSDT はアセンブリ バージョンが 10.0.0.0 のMicrosoft.ReportingServices.Interfaces.dll ファイルを検索します。 ただし、この新しいアセンブリは、SSDT がインストールされているコンピューターには存在しない可能性があります。

解決策

この問題を解決するには、 devenv.exe.config ファイルと PreviewProcessingService.exe.config ファイルの正しいエントリを使用します。

devenv.exe.config ファイルのエントリを修正するには、次の手順に従います。

  • にある %Program Files%\Microsoft Visual Studio 10.0\Common7\IDE ファイルを開きます。

    PreviewProcessingService.exe.config ファイルは、%Program Files%\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssembliesにあります。

  • devenv.exe.config ファイルで、次のエントリを見つけます。

    <dependentAssembly>
        <assemblyIdentity name="Microsoft.ReportingServices.Interfaces" publicKeyToken="89845dcd8080cc91" culture="neutral"/>
        <bindingRedirect oldVersion="9.0.242.0" newVersion="10.0.0.0"/>
    </dependentAssembly>
    
  • エントリを次のように置き換えます。

    <dependentAssembly>
        <assemblyIdentity name="Microsoft.ReportingServices.Interfaces" publicKeyToken="89845dcd8080cc91" culture="neutral" />
        <assemblyIdentity name="Microsoft.ReportingServices.Interfaces" publicKeyToken="89845dcd8080cc91" culture="neutral" />
        <bindingRedirect oldVersion="8.0.242.0" newVersion="11.0.0.0" />
        <bindingRedirect oldVersion="9.0.242.0" newVersion="11.0.0.0" />
        <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" />
    </dependentAssembly>
    
  • devenv.exe.config ファイルを保存します。

  • Visual Studio または SSDT を閉じてから再度開きます。

PreviewProcessingService.exe.config ファイル内のエントリを修正する手順は同じです。