[SSRS]Reporting Services 使用時の TERADATA 拡張機能エラー

森  隆博
SQL Developer Support Engineer

みなさんは、SQL Server Reporting Services 2008 以降のバージョンを使用していて、イベントログにこんなエラーメッセージが記録されたことはありませんか?
Reporting Services のインストール直後や Reporting Services のサービスを再起動したりしたときにイベントログに記録されることがあるエラーです。 

Report Server (MSSQLSERVER) は TERADATA 拡張機能を読み込めません。

 

TERADATA レポート サーバー拡張機能のインスタンスを生成中に例外が発生しました

または SharePoint 統合モードの SQL Server 2012 Reporting Services を使用していて、このようなエラーがイベントログに記録されたことはありませんか?  
SharePoint 統合モードの場合、レポートデータソースの「接続テスト」や「OK」ボタンをクリックすると、イベントログに以下のエラーが記録されることがあります。

SQL Server Reporting Services Shared Service は SQLPDW 拡張機能を読み込むことができません。(アプリケーション: SQL Server Reporting Services Service Application、関連付け ID: fe40a39f-96f5-40ce-873a-a7ddeef2344f)

 

SQL Server Reporting Services Shared Service は TERADATA 拡張機能を読み込むことができません。(アプリケーション: SQL Server Reporting Services Service Application、関連付け ID: fe40a39f-96f5-40ce-873a-a7ddeef2344f)

 
■イベントログの詳細 

ログの名前: Applicationソース: SQL Server Reporting Services Shared Service日付: 2013/08/16 15:33:13イベント ID: 1108タスクのカテゴリ: 拡張機能レベル: エラーキーワード: クラシックユーザー: N/Aコンピューター: xxxxxxxxxx説明:SQL Server Reporting Services Shared Service は TERADATA 拡張機能を読み込むことができません。(アプリケーション: SQL Server Reporting Services Service Application、関連付け ID: 32df6f05-536d-4f19-b880-6bca6de6b3d0)イベント XML:<Event xmlns="https://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="SQL Server Reporting Services Shared Service" /> <EventID Qualifiers="0">1108</EventID> <Level>2</Level> <Task>2</Task> <Keywords>0x80000000000000</Keywords> <TimeCreated SystemTime="2013-08-16T06:33:13.000000000Z" /> <EventRecordID>145559</EventRecordID> <Channel>Application</Channel> <Computer>xxxxxxxxxx</Computer> <Security /> </System> <EventData> <Data>SQL Server Reporting Services Shared Service</Data> <Data>TERADATA</Data> <Data>SQL Server Reporting Services Service Application</Data> <Data>32df6f05-536d-4f19-b880-6bca6de6b3d0</Data> </EventData></Event>

 

ログの名前: Applicationソース: SQL Server Reporting Services Shared Service日付: 2013/08/16 15:33:13イベント ID: 1108タスクのカテゴリ: 拡張機能レベル: エラーキーワード: クラシックユーザー: N/Aコンピューター: xxxxxxxxxx説明:SQL Server Reporting Services Shared Service は SQLPDW 拡張機能を読み込むことができません。(アプリケーション: SQL Server Reporting Services Service Application、関連付け ID: 32df6f05-536d-4f19-b880-6bca6de6b3d0)イベント XML:<Event xmlns="https://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="SQL Server Reporting Services Shared Service" /> <EventID Qualifiers="0">1108</EventID> <Level>2</Level> <Task>2</Task> <Keywords>0x80000000000000</Keywords> <TimeCreated SystemTime="2013-08-16T06:33:13.000000000Z" /> <EventRecordID>145560</EventRecordID> <Channel>Application</Channel> <Computer>xxxxxxxxxx</Computer> <Security /> </System> <EventData> <Data>SQL Server Reporting Services Shared Service</Data> <Data>SQLPDW</Data> <Data>SQL Server Reporting Services Service Application</Data> <Data>32df6f05-536d-4f19-b880-6bca6de6b3d0</Data> </EventData></Event>

 

 今回は、このエラーについて説明します。

エラーの説明
Reporting Services は Teradata と連携するために拡張機能を用意しています。
予め、Reporting Serices の構成ファイルには Teradata と連携するための拡張機能の記述が用意されているものの、実際の Teradata アセンブリは SQL Server または .NET Framework に付属していないために記録されるエラーです。

このエラーが記録されたとしても、Reporting Services の動作には問題はありません。
このため、このエラーは無視しても問題ないものですが、エラーの記録を止めたい場合、以下の対処方法が有効です。

対処方法(Reporting Services ネイティブモード、SharePoint 統合 RS 2008 R2 までの場合)

Teradata 拡張機能によって提供される機能が必要かどうかによっていずれかを選択できます。

・Teradata 拡張機能によって提供される機能が不要な場合: [A. 構成ファイルを変更する方法] をご覧ください。
・Teradata 拡張機能によって提供される機能が必要な場合:[B  .NET Data Provider for Teradata をインストールする方法] をご覧ください。

 

A 構成ファイルを変更する方法
(1) 構成ファイルを探します。
SQL Server 2008 R2 を例にすると既定の構成ファイルのパスは以下の通りです。

C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\rsreportserver.config

(2) rsreportserver.config を別名でコピーしてバックアップを取ります。

(3) Reporting Services 構成ファイルを変更します。

構成ファイル内を TERADATA キーワードで検索し、下記それぞれの要素配下の Extension Name="TERADATA" の要素をすべてコメントアウトもしくは削除してください。

------------------------------------
<Data> 要素配下
<Extension Name="TERADATA" Type="Microsoft.ReportingServices.DataExtensions.TeradataConnectionWrapper,Microsoft.ReportingServices.DataExtensions"/>

<SemanticQuery> 要素配下
<Extension Name="TERADATA" Type="Microsoft.ReportingServices.SemanticQueryEngine.Sql.Teradata.TdSqlSQCommand,Microsoft.ReportingServices.SemanticQueryEngine">

<ModelGeneration> 要素配下
<Extension Name="TERADATA" Type="Microsoft.ReportingServices.SemanticQueryEngine.Sql.Teradata.
TdSqlModelGenerator,Microsoft.ReportingServices.SemanticQueryEngine"/>
------------------------------------

(4) 構成ファイルを変更した後 Reporting Services サービスを再起動します。

B . NET Data Provider for Teradata をインストールする場合
将来的に Teradata データベースを利用される可能性がある場合は、.NET Data Provider for Teradata (version 12以降) をインストールすることでエラーが回避できます。
.NET Data Provider for Teradata は、Teradata 社のサイトにてご入手ください。

Teradata .NET Data Provider
https://downloads.teradata.com/download/connectivity/dot-net-data-provider

参考情報
構成上の問題のトラブルシューティング:"TERADATA レポート サーバー拡張機能のインスタンスを生成中に例外が発生しました
 

対処方法(Reporting Services 2012 以降の SharePoint 統合 RS の場合)
Reporting Services 2012 SharePoint 統合モードの場合、拡張機能は SharePoint 管理シェルで管理しています。
SharePoint 管理シェル コマンドで拡張機能のリストと無効化を行うことができます。

(1) 管理シェルを起動します。

(2) 以下のコマンドを実行します。

    $apps = Get-SPRSServiceApplication
    Get-SPRSExtension -identity $apps
    Remove-SPRSExtension -identity $apps -ExtensionType "Data" -name "SQLPDW"
    Remove-SPRSExtension -identity $apps -ExtensionType "SemanticQuery" -name "SQLPDW"
    Remove-SPRSExtension -identity $apps -ExtensionType "SemanticQuery" -name "TERADATA"
    Remove-SPRSExtension -identity $apps -ExtensionType "ModelGeneration" -name "TERADATA"
    Remove-SPRSExtension -identity $apps -ExtensionType "Data" -name "TERADATA"

 

これで、 イベントログに該当のエラーが記録されることはなくなります。