2015年6月23日 (火)

[SP2013] Managed Metadata Services に関するトラブルシューティング

検証環境として利用しているオンプレミス環境の SharePoint Server 2013 で、いつの間にか Managed Metadata Services にアクセスできなくなる事象がありましたので、対処法を備忘録としてメモしておきます。

症状

サーバーの全体管理サイトから Managed Metadata Services の管理画面にアクセスすると下図のようにエラーとなり、何も操作できません。

2015-06-23 14-30-19

ULSログを見ると次のようなエラーが確認できます。

2015-06-23 14-42-59

 "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)"

対処方法

色々と調べたところ、似たような事象に多くの方が遭遇していることがわかりました。しかし、残念なことに、サービス アプリケーションをデータベースごと再作成するのが唯一の方法のようです。

  1. Managed Metadata Services の現在の設定を確認しておく。これには、[サーバー全体管理]>[サービス アプリケーションの管理]にアクセスし、Managed Metadata Services のプロパティや管理者情報をメモしておきます。また、Managed Metadata Services Proxy のプロパティもメモしておきます。
    2015-06-23 15-01-49
    2015-06-23 15-02-21

  2. 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
    

    2015-06-23 15-17-27

  3. バックアップが終わったら、バックアップログを確認し、エラーが出力されていないことを確認します。問題なければ、下記の通り、データベースごとサービスアプリケーションを削除します。
    2015-06-23 15-18-55

    2015-06-23 15-20-00
  4. Windows PowerShell を使ってバックアップから復元します。

    
    #復元
    Restore-SPFarm -Directory \\sp2013-a\backups\ServiceApp -RestoreMethod New  -Verbose
    Restore-SPFarm -Directory \\sp2013-a\backups\ServiceAppProxy -RestoreMethod New  -Verbose
    

    復元時には、サービス アプリケーション用のアカウントのパスワード入力が必要です。また、サービス アプリケーションに新しい名前を指定したり、サービス アプリケーションのDBの格納場所や、データベース名、サーバー名などを変更することも可能です(既定値から変更がなければそのまま Enter キーを押下します)。

  5. 復元したサービス アプリケーションを、目的のWebアプリケーションのプロキシグループに追加しておきます。
  6. 最後に、1で確認した設定通りに設定しなおします。

以上で作業は完了です。実作業を行う場合は、テスト環境で十分に手順を確認してから行うようにしてください。

[参考]

コメント