SQL Server Developer Support チーム
須田 恵
概要
イベントログに、SQL Server Reporting Services での下記エラーが記録されることがあります。
------------------------
アプリケーション ドメイン DefaultDomain を読み込めませんでした。
次の例外が発生しました: appdomain をアンロード中にエラーが発生しました。 (HRESULT からの例外: 0x80131015)。
------------------------
このエラーについてよくお問い合わせをいただくことがありますが、OS の再起動など Reporting Services 停止タイミングに伴い記録されている場合、かつ Reporting Services 利用において特に実害がない場合には、安全に無視してよいエラーとなります。
詳細
アプリケーションドメインとは?
アプリケーションドメインは、.NET Framework における実行コードの管理単位のことです。
Reporting Services は、レポート サーバー Web サービス・レポート マネージャ・およびバックグラウンド処理アプリケーションなどの複数の機能を包含した一つのサービスとして存在しますが、各機能ごとに実行されている処理や関連データが、別の機能に影響しないように分離されます。
この単位がアプリケーション ドメインであり、エラーメッセージの “DefaultDomain” がアンロードに失敗したアプリケーション ドメインです。
- 参考情報
レポート サーバー アプリケーションのアプリケーション ドメイン
エラーの意味
アプリケーションドメインは、必要がなくなったタイミングでアンロードされる性質のオブジェクトです。Reporting Services の停止に伴い、各アプリケーションは順次停止され、各アプリケーションのアプリケーション ドメインもアンロードされます。
エラーメッセージにある例外コード 0x80131015 より、.NET Framework の CannotUnloadAppDomainExceptionが発生したことを示していますが、この例外は下記の場合にスローされるものです。
" アプリケーションの有効期間中は読み込まれた状態でなければならない既定のアプリケーション ドメイン (DefaultDomain) をアンロードした。
" すぐには停止できない実行中のスレッドがあるアプリケーション ドメインをアンロードした。
" 既にアンロードされているアプリケーション ドメインをアンロードした。
なぜ安全に無視していいの?
Reporting Services 停止のタイミングで本エラーが発生した場合は、アプリケーションドメインがまだ必要とされているのにアンロードしたなど、終了処理におけるタイミングによって発生したと判断できます。
アプリケーション ドメインは、ファイルに残るような情報ではなく、プロセス実行中に一時的にメモリ上に保持された情報です。
プロセス実行中に確保されたメモリは、プロセスが終了すれば解放されますので、Reporting Services のプロセスが終了すれば、アプリケーション ドメインとして使用していたメモリ領域も解放されます。
次回レポーティング サービスの起動時には、新たにメモリが割り当てられ、アプリケーション ドメインも作成されなおすため、前回レポーティング サービスの終了時にアプリケーション ドメインのアンロードに失敗しても、通常影響はありません。
アプリケーションドメイン自体が、Reporting Services データベースに対してのアクセスや、レジストリへのアクセスなど、リソースの操作を行うことはなく、アンロードが失敗してもその結果データベースに不整合を起こすことなどは設計上ありません。
基本的に Reporting Services を正常に動作させる上で影響を与えるエラーではないため、Reporting Services 停止タイミングに記録される状況であれば、安全に無視してもよいエラーです。
エラーの抑止方法はない
残念ながら、アンロード時の終了処理過程のタイミングなどによって本エラーが発生する可能性がありますので、完全に抑止することはできません。
なお、何か Reporting Services に問題がある状況や他のエラーも記録されている場合において本エラーも記録されていた場合には、別の問題が起点となり影響を受けた結果本エラーが発生している状況と考えられますので、その際にはマイクロソフトサポート窓口までお問い合わせいただければ幸いです。
以上です。