SharePoint Designer 2010 で作成したワーク フローでユーザー プロファイルのフィールドが取得できない

こんにちは。SharePoint サポートチームの多田です。

今回は SharePoint Designer 2010 で作成したワーク フローでユーザー プロファイルのフィールドが取得できない現象の説明と回避策をご案内します。

 

- 環境

SharePoint Server 2010 SP2 + 2013 年 12 月 CU (KB 2849971)

SharePoint Designer 2010

 

現象

===

SharePoint Server 2010 SP2 + 2013 年 12 月 CU (KB 2849971) において、SharePoint Designer 2010 にてワークフローを作成する際に、ユーザー プロファイルを参照すると以下のエラーが発生します。

 

 

メッセージ:「サーバーからプロファイル スキーマを取得できませんでした。プロファイル ストアが正しく構成されていることを確認してください。」

 

現象の再現手順

^^^^^^^^

1. Search Service Application と User Profile Service Application をあらかじめ構成しておきます。

2. SharePoint Server 2010 SP2 に 2013 年 12 月 CU (KB 2849971) を適用します。

3. SharePoint Server に対して、何も権限を持っていない新規の管理アカウントで、新規 Web アプリケーションを作成します。

4. 作成した Web アプリケーション上で、新規サイト コレクションを作成します。

5. SharePoint Designer 2010 を起動し、作成したサイト コレクションを開きます。

6. リボンメニューから、[リスト ワークフロー] をクリックし、任意のリストをクリックします。

7. 任意のタイトルを入力し、[OK] をクリックします。

8. リボンメニューにて、[アクション] をクリックし、[リスト アイテムを更新する] をクリックします。

9. 追加されたアクションにて、[リスト] をクリックします。

10. [追加] をクリックします。

11. "フィールドを選択" にて [タイトル] を選択し、"割り当てる値を設定" にて [fx] をクリックします。

12. "データ ソース" にて [ユーザー プロファイル] を選択します。

13. 上記のエラーが発生することを確認します。

 

補足事項

^^^^^^

本現象は SharePoint Server 2010 SP2 では発生しません。本現象は 2013 年 12 月 CU (または SP2 以降の CU) で発生します。

 

原因

===

2013 年 12 月 CU (または SP2 以降の CU) の修正により、Web アプリケーションの実行アカウントが検索 DB (Search_Service_Application_DB) 上のストアドプロシージャーを呼びだすよう変更されました。

本現象は Web アプリケーションの実行アカウントが検索 DB (Search_Service_Application_DB) に対して、ストアドプロシージャーの実行権限を持っていない場合は本エラーが発生します。上記のエラーが発生した際に、診断ログに以下のエラーログが記録されます。

 

--- 診断ログ ---

xx/xx/2014 xx:xx:xx.xx w3wp.exe (0x0XXXX) 0xXXXX SharePoint Server Database 880i High System.Data.SqlClient.SqlException: このログインで要求されたデータベース "Search_Service_Application_DB_ xxxxxxx" を開けません。ログインに失敗しました。 ユーザー 'DOMAIN01\ManageApp01' はログインできませんでした。

------------------

 

解決策

====

検索 DB (Search_Service_Application_DB) において、Web アプリケーションの実行アカウントに対して、DB_Owner 権限を与えるか、もしくは最小権限を与える場合は以下の権限を与えます。

 

・db_datareader

・proc_MSS_GetSchemaHighLevelInfo の実行権限 (※ 1)

 

(※ 1)

以下に設定手順をご案内いたします。

1. SQL Management Studio を起動し、該当の SQL インスタンスにログインします。

2. 左ペインより、[データベース] - [Search_Service_Application_DB_xxxxxxx] - [プログラミング] - [ストアド プロシージャ] を展開し、[dbo.proc_MSS_GetSchemaHighLevelInfo] を右クリックし、[プロパティ] をクリックします。

3. 左ペインより、[権限] をクリックします。

4. [検索] をクリックし、該当の Web アプリケーションのアカウントを入力します。

5. 権限の欄にて、権限が "実行" であるものについて、[許可] にチェックを入れます。

6. [OK] をクリックします。