SQL Server Developer Support Team
藤丸陽子
SQL Server Analysis Services 利用時に、メタデータマネージャーエラーが記録され、Analysis Services に対する操作が失敗する事象とその対処について案内します。
事象
Analysis Services データベースの参照、処理、バックアップ・復元、もしくは、Analysis Services サービス起動時にエラーが発生し、
実施した操作が失敗します。
Analysis Services サービス起動時にエラーとなる場合や、サービス起動は成功した後も、特定のデータベースのみで実施の操作が失敗する場合と、すべてのデータベースで問題が発生する場合があります。また、失敗する操作は一つに限らず、いくつか、もしくは、全て失敗する可能性があります。
エラーメッセージ
メタデータマネージャーエラーが発生すると次のようなエラーが発生します。 -----抜粋----- ファイル システム エラー: ファイルを開いている途中で次のエラーが発生しました '\\?\C:\Program Files\Microsoft SQL Server\MSAS<Version>.MSSQLSERVER\OLAP\Data\SSASDB1.0.db\<ファイル名>’ --------------- -----抜粋----- コード: 0xC114001D --- メタデータマネージャーでエラーが発生しました。 <SSASオブジェクト名> をファイル '\\?\C:\Program Files\Microsoft SQL Server\MSAS<Version>.MSSQLSERVER\OLAP\Data\SSASDB1.0.db\<ファイル名> ' から読み込み中に、エラーが発生しました。 -------------- -----抜粋----- Message: モデル の読み込み中にエラーが発生しました。 (Source: \\?\C:\xxx\MSAS<Version>.MSSQLSERVER\OLAP\Log\msmdsrv.log, Type: 3, Category: 289, Event ID: 0xC1210013) --------------
|
要因
Analysis Services データベースを構成する一部、もしくは複数のファイルの破損や不整合が発生した場合に起きうる問題です。
Analysis Services 稼働マシンで以下のような運用がなされた場合に発生する可能性があります。
・ Analysis Services データベースファイルが存在するディスクの障害による、ファイル破損やファイルの書き込みエラーが発生した場合
・ データベースおよびキューブ処理中に Analysis Services サービスを再起動した場合
・ データベースバックアップ中に Analysis Services サービスを再起動した場合
・ ウィルス対策ソフトが Analysis Services データベースファイルの一部をスキャン中に、Analysis Services を再起動した場合
・ Analysis Services が稼働するマシンの強制終了等、正しくない形で Analysis Services サービスを終了した場合
補足
どの要因に該当しているかは、残念ながらログ等からは確認することはできません。
対処方法
メタデータマネージャーエラーが発生した場合、問題が検知されたファイルを含むデータベースを削除し、再配置することが対処方法となります。再配置はメタデータマネージャーエラーが発生する前に採取しておいた Analysis Services データベースのバックアップファイルが必要です。 正常時のデータベースバックアップファイルが存在しない場合、Analysis Services データベースプロジェクトを再配置の上、データベースを再処理します。
重要
メタデータマネージャーによる予期せぬエラーに対処できるよう、定期的に Analysis Services データベースのバックアップを採取しておきましょう。 メタデータマネージャーエラーが発生した後には、Analysis Services データベースのバックアップの採取もエラーとなる可能性があるため、エラーが出ていない正常時に都度バックアップを採取しておくことが重要です。
Analysis Service データベースのバックアップ手順は、下記技術情報に記載があります。
[データベースのバックアップ] ダイアログ ボックス (Analysis Services - 多次元データ) <http://msdn.microsoft.com/ja-jp/library/ms186830(v=SQL.105).aspx> ----- <抜粋> ----- [データベースのバックアップ] ダイアログ ボックス (Analysis Services - 多次元データ) ・・・ SQL Server Management Studio のオブジェクト エクスプローラーで、Analysis Services インスタンスの [データベース] フォルダー、またはデータベースを右クリックし、[バックアップ] をクリックします。 ----- </抜粋> ----- |
事前作業
Analysis Services のデータフォルダ配下を別の場所にコピーの上、退避しておきます。
Tips
Analysis Services のデータフォルダは既定で下記パスに存在します。 例) \Program Files\Microsoft SQL Server\MSAS<Version>.MSSQLSERVER\OLAP\Data 実際どのパスが Analysis Services のデータフォルダであるかは SQL Server Management Studio から 該当の SQL Server Analysis Services インスタンスへ接続し、インスタンスを右クリックで [プロパティ] を選択すると表示される "分析サーバーのプロパティ" ダイアログの [全般] - "DataDir" プロパティの現在の値から確認できます。 |
対処手順 (バックアップ復元による対処)
1) SQL Server Analysis Services サービスを停止します。 ([管理ツール] - [サービス] - [SQL Server Analysis Services] )
2) Analysis Services データフォルダ配下から、エラーメッセージに記録されているデータベースの .db フォルダを削除します。
例) Analysis Services データフォルダが "C:\Program Files\Microsoft SQL Server\MSAS<Version>.MSSQLSERVER\OLAP\Data" で、メタデータマネージャーエラーが記録されているデータベースが SSASDB1 の場合:
"C:\Program Files\Microsoft SQL Server\MSAS<Version>.MSSQLSERVER\OLAP\Data" フォルダ配下の SSASDB1.<number>.db フォルダを削除します。
3) SQL Server Analysis Services サービスを開始します。 ([管理ツール] - [サービス] - [SQL Server Analysis Services] )
4) メタデータマネージャーエラーが発生する前に採取しておいた該当の Analysis Services データベースバックアップファイル (.abf)
(例: SSASDB1.abf) を SQL Server Management Studio から復元します。
上記手順でエラーが解消しない場合、次の対応で、エラーの解消がなされるかご確認下さい。
- 他のデータベースを一点一点削除し、エラーの解消を確認する。 (上記対処手順 1) から 4) を繰り返す。)
- Analysis Services データフォルダの場所を変更し、事前に採取しているバックアップを順次復元する
補足
バックアップファイルが存在しない場合
正常時のデータベースバックアップファイルが存在しない場合、Analysis Services データベースプロジェクトを再配置の上、再処理します。
前述の対処手順 1) から 3) を実行し、Analysis Services データベースプロジェクトを該当の Analysis Services インスタンスに配置の上、データベース完全処理を実施下さい。
エラーが解消しない場合、前述の対処手順同様に下記を確認下さい。
- 他のデータベースを一点一点削除し、エラーの解消を確認する。
- Analysis Services データフォルダの場所を変更し、事前に採取しているバックアップを順次復元する
エラーを可能な限り抑止するための運用方法
Analysis Services 運用にあたり、下記の運用がなされていることを確認下さい。
- Analysis Services データベース処理中やオンラインでデータベースデザインを変更している最中の Analysis Services サービス停止・再起動や OS 停止・再起動をしないようにする。
- ウイルス対策ソフトで Analysis Services 関連のファイル除外設定をする。*1
- SQL Server を最新のサービスパックで運用する *2
*1 ファイル除外設定を行っていない場合、下記技術情報を参考にファイル除外設定を行います。
SQL Server を実行しているコンピューター上で実行するウイルス対策ソフトウェアを選択する方法
<http://support.microsoft.com/kb/309422/ja>
*2 SQL Server を最新のサービスパックで運用することも合わせて推奨しております。
SQL Server の最新モジュール情報 (まとめページ)
http://blogs.msdn.com/b/jpsql/archive/2010/08/01/sql-server.aspx