検証環境として利用しているオンプレミス環境の SharePoint Server 2013 で、いつの間にか Managed Metadata Services にアクセスできなくなる事象がありましたので、対処法を備忘録としてメモしておきます。
症状
サーバーの全体管理サイトから Managed Metadata Services の管理画面にアクセスすると下図のようにエラーとなり、何も操作できません。
ULSログを見ると次のようなエラーが確認できます。
"Failed to get term store for proxy 'Managed Metadata Service'. Exception: System.Collections.Generic.KeyNotFoundException: 指定されたキーはディレクトリ内に存在しませんでした。 場所 Microsoft.SharePoint.Taxonomy.Internal.XmlDataReader.GetDateTime(String name) 場所 Microsoft.SharePoint.Taxonomy.Internal.SharedTermStore.Initialize(IDataReader dataReader, Guid termStoreIdValue, Boolean fromPersistedData) 場所 Microsoft.SharePoint.Taxonomy.Internal.SharedTermStore..ctor(IDataReader dataReader, Guid termStoreId, Boolean fromPersistedData) 場所 Microsoft.SharePoint.Taxonomy.Internal.DataAccessManager.
GetTermStoreData(MetadataWebServiceApplicationProxy sharedServiceProxy, Boolean& partitionCreated)"
対処方法
色々と調べたところ、似たような事象に多くの方が遭遇していることがわかりました。しかし、残念なことに、サービス アプリケーションをデータベースごと再作成するのが唯一の方法のようです。
- Managed Metadata Services の現在の設定を確認しておく。これには、[サーバー全体管理]>[サービス アプリケーションの管理]にアクセスし、Managed Metadata Services のプロパティや管理者情報をメモしておきます。また、Managed Metadata Services Proxy のプロパティもメモしておきます。
- Windows PowerShell を使ってManaged Metadata Service アプリケーションとプロキシの2つのみをバックアップします。サンプル スクリプトは次の通りです。
Add-PSSnapin Microsoft.SharePoint.PowerShell #バックアップ対象のitem パスの確認 Backup-SPFarm -ShowTree #サービスアプリケーションのバックアップ backup-spfarm -BackupMethod full -Directory \\sp2013-a\backups\ServiceApp -item “ファーム\共有サービス\共有サービス アプリケーション\Managed Metadata Service” -verbose #サービスアプリケーションProxyのバックアップ backup-spfarm -BackupMethod full -Directory \\sp2013-a\backups\ServiceAppProxy -item “ファーム\共有サービス\共有サービス プロキシ\Managed Metadata Service” -verbose
- バックアップが終わったら、バックアップログを確認し、エラーが出力されていないことを確認します。問題なければ、下記の通り、データベースごとサービスアプリケーションを削除します。
- Windows PowerShell を使ってバックアップから復元します。
#復元 Restore-SPFarm -Directory \\sp2013-a\backups\ServiceApp -RestoreMethod New -Verbose Restore-SPFarm -Directory \\sp2013-a\backups\ServiceAppProxy -RestoreMethod New -Verbose
復元時には、サービス アプリケーション用のアカウントのパスワード入力が必要です。また、サービス アプリケーションに新しい名前を指定したり、サービス アプリケーションのDBの格納場所や、データベース名、サーバー名などを変更することも可能です(既定値から変更がなければそのまま Enter キーを押下します)。 - 復元したサービス アプリケーションを、目的のWebアプリケーションのプロキシグループに追加しておきます。
- 最後に、1で確認した設定通りに設定しなおします。
以上で作業は完了です。実作業を行う場合は、テスト環境で十分に手順を確認してから行うようにしてください。
[参考]
コメント