Project Server 2010 で多数のリソースを管理するためのベスト プラクティス

 

適用先: Project Server 2010

トピックの最終更新日: 2016-11-30

この記事では、プロジェクトのユーザー数が多い場合に、Microsoft Project Server 2010 環境でユーザーを管理するベスト プラクティスについて説明します。

この記事の内容

  • Project Server 2010 サイトの権限の概要

  • Project Server 2010 ユーザーの Microsoft SharePoint Server 2010 権限

  • プロジェクト サイトへのユーザー数が推奨ユーザー数制限を超えた場合のパフォーマンスの問題

  • PWA 親サイトからの権限の継承

  • プロジェクト サイト権限の設定の無効化

  • プロジェクト サイトへのユーザー数の推奨ユーザー数制限超過に関連付けられたエラー

Project Server 2010 サイトの権限の概要

Project Server 2010 は標準の SharePoint 権限インフラストラクチャを使用して、Microsoft Project Web App (PWA) サイトの権限を設定します。そのインフラストラクチャは、Project Server に保存されている個別のプロジェクト計画に対して作成されたプロジェクト サイト (以前のプロジェクト ワークスペース サイト) のアクセス制御を設定するときにも使用します。

PWA サイト レベルでは、ユーザーが、Project Server 内でのそれぞれのアクセス許可レベルに応じて特定の SharePoint グループに追加されます。PWA サイトのサイト設定ページには、プロジェクト マネージャー、閲覧者、チーム メンバー、Web 管理者、およびワークフローおよびプロジェクト詳細ページ管理者の "Microsoft Project Server" SharePoint グループが含まれます。Project Server 2010 に追加されたユーザーは、アクセスが許可されている PWA サイトの適切なグループにも追加されます。たとえば、Project Server 2010 に追加されたユーザーがプロジェクト マネージャー セキュリティ グループのメンバーであるとします。この場合、そのユーザーは、自分がアクセスできる PWA ホーム ページ、[プロジェクト センター] ページ、[承認センター] ページ、およびすべての PWA サイト ページで、[サイトの権限] の [プロジェクト マネージャー グループ (Microsoft Project Server)] に追加されます。

PWA サイトのサイト権限の設定には、"Microsoft Project Server" SharePoint グループが含まれるだけでなく、サイト コレクション管理者アカウントおよび他のファーム管理者アカウントの個別の SharePoint ユーザー アカウントがいくつか表示されます。次の表は、PWA サイト レベルの Microsoft Project Server SharePoint グループの SharePoint アクセス許可レベルを示しています。

名前 アクセス許可レベル

プロジェクト マネージャー グループ (Microsoft Project Server)

制限付きアクセス、プロジェクト マネージャー (Microsoft Project Server)

閲覧者グループ (Microsoft Project Server)

制限付きアクセス、閲覧者 (Microsoft Project Server)

チーム メンバー グループ (Microsoft Project Server)

制限付きアクセス、チーム メンバー (Microsoft Project Server)

Web 管理者グループ (Microsoft Project Server)

制限付きアクセス、Web 管理者 (Microsoft Project Server)

ワークフローおよびプロジェクト詳細ページ管理者グループ (Microsoft Project Server)

制限付きアクセス

プロジェクト サイトの場合、ユーザーは個人として直接追加されます。特定の "Microsoft Project Server" SharePoint グループには追加されません。ユーザーに付与されるアクセス許可レベルはそのユーザーのロールによって決まります。

Project Server 2010 ユーザーの SharePoint Server 2010 権限

Project Server 2010 ユーザーは、SharePoint Server 2010 権限によって Project Server サイトにアクセスできます。Project Server 2010 は、Microsoft SharePoint Server 2010 に基づいており、Project Server 2010 を通じて使用できるサイトが SharePoint サイトです。

次の 2 種類の Project Server 2010 サイトに、SharePoint 権限を割り当てる必要があります。

  • PWA サイト (PWA ホーム ページ、プロジェクト センター、リソース センターなど)。

  • プロジェクト サイト (個別のプロジェクト用のグループ作業サイト。Office Project Server 2007 ではプロジェクト ワークスペース サイト と呼ばれていました)。

PWA サイトの場合は、Project Server 2010 ユーザーが、Project Server 2010 でのそれぞれのアクセス許可レベルに応じて Microsoft Project Server SharePoint グループに割り当てられます。

ユーザーのセキュリティ ロール PWA サイトでの SharePoint 権限
  • プロジェクト マネージャー

  • ポートフォリオ マネージャー

  • リソース マネージャー

  • 役員

プロジェクト マネージャー グループ (Microsoft Project Server)

管理者

Web 管理者グループ (Microsoft Project Server)

チーム メンバー

チーム リーダー

チーム メンバー グループ (Microsoft Project Server)

プロジェクト サイトの場合、Project Server 2010 ユーザーには次の SharePoint 権限が付与されます。Project Server 2010 ユーザーは、サイトへの特定の SharePoint 権限を持つ個別の SharePoint ユーザーとして追加されます。

ユーザー プロジェクト サイトでの SharePoint 権限

プロジェクトを発行したプロジェクト マネージャー

プロジェクト マネージャー (Microsoft Project Server)

プロジェクトを保存する権限を持つプロジェクト マネージャー

プロジェクト マネージャー (Microsoft Project Server)

プロジェクトに割り当てられているチーム メンバー

チーム メンバー (Microsoft Project Server)

プロジェクトのプロジェクト サイトを表示する権限を持つ Project Server ユーザー

閲覧者 (Microsoft Project Server)

プロジェクト サイトへのユーザー数が推奨ユーザー数制限を超えた場合のパフォーマンスの問題

Office Project Server 2007 では、個別のユーザーが特定のアクセス許可レベルで PWA サイトおよびプロジェクト ワークスペース サイトに追加されるので、PWA サイトに対してユーザーを同期するときにパフォーマンスの問題が発生する可能性があります。サイトのユーザー権限が変更されると、そのサイトに対する権限を持つすべてのユーザーが一度削除されてから、再度サイトに追加されます。サイト上に多数のユーザーが存在する場合、このプロセスには非常に長い時間がかかる可能性があります。サイトへの再追加処理が実行中のユーザーには、処理が完了するまでアクセス拒否エラーが発生します。

Project Server 2010 では、PWA サイトへのユーザー アクセスに対して 2 つの変更が行われ、Office Project Server 2007 での問題が解決されています。

  • PWA サイトにアクセスするユーザーが SharePoint ユーザー グループに追加されました。個別には追加されません。

  • ユーザーの同期が行われるとき、ユーザーは個別に削除され、1 つずつサイトに再追加されます (すべてのユーザーが削除され、1 つずつ戻されるのではありません)。

こうした変更は、一般的にユーザーのアクセス数が多い PWA サイトに対してのみ行われました。プロジェクト サイトに対しては行われていません。これは、通常、プロジェクト サイトではユーザーのアクセス数がはるかに少なく (ほとんどの場合、プロジェクトにリソースが割り当てられています)、同期の問題の影響を受ける可能性があまりないからです。これが問題になり得るのは、多数のユーザーを多数のプロジェクト サイトにアクセスさせたいときです。これを実現するには、多くのユーザーをプロジェクトに追加するか、多くのプロジェクトが含まれるカテゴリに、プロジェクト サイトを表示する権限をチーム メンバー レベルで割り当てます。ただし、このシナリオが使用され、ユーザー数が多くなると、SharePoint Server 2010 の推奨ソフトウェア境界と制限を超える可能性が出てきます。この推奨境界を超えたときにパフォーマンスの問題が発生することがあります。サイトに個別に追加された各ユーザーがセキュリティ スコープと見なされます。リストあたりの一意のセキュリティ スコープの推奨最大数は 1,000 個です。サイト内の各リストおよびライブラリは親サイトの権限から継承し、1,000 人を超える個別のユーザーがサイトにアクセスすると、この制限を超えることになります。リストのセキュリティ スコープ制限の詳細については、「SharePoint Server 2010 容量管理ソフトウェアの境界と制限」を参照してください。

一意の推奨セキュリティ スコープの境界を超えたときに、パフォーマンスの問題が発生する可能性があります。この問題は、カテゴリまたはグループの変更、あるいはユーザーの追加、ユーザーの非アクティブ化などの操作によって、サイト メンバーシップが変更されたときに発生します。個別ユーザー数の推奨制限が適用された 1 つの理由は、この制限を超えると、サイトからユーザーを削除する処理が極端に遅くなる可能性があるからでした。同じユーザーを複数のサイトから削除する場合は特に遅くなり、そのすべてのサイトが推奨制限を超えていました。複数のユーザーが非アクティブ化されている場合は、サーバーが応答しなくなり、ユーザーを認証できなくなる可能性があります。これにより、サイトの推奨個別ユーザー数制限を超えた段階で独自の問題が発生します。ユーザーを管理しなければならないときに、サイトの権限を持つユーザーが多すぎてサーバーが応答しなくなるのです。サイトからユーザーを削除して問題を解決しようとしたときに、サーバーが応答しなくなることがあります。

目的に応じて問題を回避するベスト プラクティス

  • ほとんどのユーザーをほとんどのプロジェクト サイトにアクセスできるようにする必要がある場合: ユーザーを個別にサイトに追加するのではなく、SharePoint Server 2010 グループと PWA からの継承を使用して、ユーザーをグループに追加します。たとえば、プロジェクト サイトの親サイトは、通常、PWA ホーム サイトです。このシナリオでは、プロジェクト サイトが、PWA ホーム サイトの権限を継承します。この PWA ホーム サイトには、Microsoft Project Server SharePoint グループのすべての PWA ユーザーが含まれます。

  • 多数のユーザーが多数のサイトに意図せずアクセスしており、問題を解決する必要がある場合: プロジェクト サイトを表示する (ユーザーがサイトにアクセスできるようにする) カテゴリ権限をカテゴリから削除します。また、プロジェクトに割り当てられているリソース数を減らすこともできます。どちらの操作を行う場合も、サイトに対するユーザーの同期を停止しておく必要があります。停止しないと、この動作によってサーバーが応答しなくなる可能性があります。

プロジェクト サイトの同期を無効にするには、Project Server Interface (PSI) (管理用 Web サービス) を使用するユーティリティを記述して、UserSyncSetting 列挙 (英語)DisablePWS に設定します。列挙は、Admin.UpdateUserSyncSetting メソッド (英語)で呼び出します。

メンバー名 説明

Enable

値=0。すべての同期を有効にします。

DisablePWA

値=1。Project Web App との同期を無効にします。

DisablePWS

値=2。ユーザーのプロジェクト サイトとの同期を無効にします。

DisableEmailSync

値=3。電子メールの同期を無効にします。

DisableAll

値=4。すべての同期を無効にします。

発行済みデータベースで MSP_WEB_ADMIN テーブルの WADMIN_USER_SYNC_SETTING 列を直接変更して、設定を無効にすることもできます。次の SQL クエリを実行すると、プロジェクト サイトの同期を無効にできます。

Update [ProjectServer_Published].[dbo].[msp_web_admin] set [WADMIN_USER_SYNC_SETTING]=2

発行済みデータベースの MSP_WEB_ADMIN テーブルを直接変更する方が、PSI を使用して同じ処理を実行するツールを作成し、テストするよりもはるかに簡単であることがわかるでしょう。

注意

ほとんどの場合、発行済みデータベースに対して直接変更を行うことはお勧めしません。また、この操作を行うと、サポートが無効になることがあります。ただし、前述のクエリを使用してプロジェクト サイトの同期を無効にすることは、例外として許可されています。

PWA 親サイトからの権限の継承

プロジェクト サイトの同期を無効にしても、SharePoint サイト権限ページに用意されている機能を使用してプロジェクトから直接ユーザーを削除しようとすると、引き続き同じ問題が発生する場合があります。問題を引き起こす個別の削除を行わずにユーザーをすばやく削除する 1 つの方法として、親サイトから権限を継承するというものがあります。これを行うには、([サイトの操作] メニューの) 個別のプロジェクト サイトの [サイトの権限] ページにあるユーザー インターフェイス リボンを使用します。

親サイトの権限をプロジェクト サイトに継承するには

  1. プロジェクト サイトで、[サイトの操作] をクリックし、[サイトの権限] をクリックします。

  2. [権限] ページで [編集] リボンをクリックします。

  3. [権限の継承] をクリックします。

  4. 継承された権限に変更するとユーザーがサイトにアクセスできなくなる可能性があることを警告するメッセージ ボックスで、[OK] をクリックします。

親サイト (PWA サイト) の権限がプロジェクト サイトによって継承されたことがリボンによって示されます。これで、親サイトの権限の構造が、プロジェクト サイトの権限の構造になります。つまり、個別の PWA ユーザーが Microsoft Project Server サイト グループに含まれることになります。

ほとんどのユーザーがほとんどのサイトにアクセスできるようにするのが最終的な目的の場合は、上記の説明に従って、プロジェクト サイトが PWA から親の権限を継承するように指定します。この処理を実行する前に、アクセスが必要なすべてのユーザーについて PWA サイトに適切な権限があることを確認する必要があります。これは、権限を継承する手順を実行すると、PWA でのユーザーの権限が、プロジェクト サイトでのユーザーの権限になるからです。

プロジェクト サイトの数が多い場合は、Windows PowerShell を使用して変更を自動化します。次の Windows PowerShell コマンドを実行すると、指定した親 PWA サイトの子であるすべてのプロジェクト サイトが、その親の権限を継承します。Windows PowerShell コマンドは、SharePoint 2010 管理シェルで実行します。

$site = Get-SPSite "<url of PWA>"
     Foreach ($web in $site.AllWebs) {
        $web.Update()
        $web.ResetRoleInheritance()
        $web.Update()
        }
     $site.Dispose()

問題が繰り返し発生しないようにするには、新しいプロジェクト サイトすべてについて、このコマンド (またはサイトの権限を継承するための前述の手順) を実行する必要があります。

注意

PWA の [サーバー設定] のプロジェクト サイト ページで [同期] オプションをクリックすると、継承が再度解除されます。プロジェクト サイトが親 PWA サイトから引き続き権限を継承する必要がある場合は、このオプションをクリックしないようにしてください。

すべてのプロジェクト サイトが PWA 権限を継承している環境では、特定のプロジェクトに機密情報を保存し、権限およびユーザーを個別に管理する必要が出てくる場合があります。これらのサイトには、Windows PowerShell を使用してプロパティを設定できます。そして、継承の設定に使用した (上記の) Windows PowerShell コマンドの変更バージョンで、そのプロパティを使用してフィルターを適用します。

プロジェクト サイト権限の設定の無効化

また、プロジェクト サイトにユーザーが自動的に追加されないように指定することもできます。それには、Project Web App の [サーバー設定] の [運用ポリシー] セクションで、[プロジェクト サイト権限] の設定を無効にします。この設定が有効になっていると、Project Server 2010 でユーザー権限が変更されたとき、プロジェクト マネージャーがプロジェクトを発行したとき、またはプロジェクト サイトが作成されたときに必ず、Project Web App ユーザーがプロジェクト サイトと自動的に同期されます。設定が有効で、このいずれかが発生すると、次の処理が自動的に実行されます。

  • プロジェクトを発行した、またはプロジェクトを保存する権限を持つプロジェクト マネージャーが、プロジェクト マネージャー (Microsoft Project Server) 権限と共にサイトに追加されます。

  • プロジェクトに割り当てられているチーム メンバーが、チーム メンバー (Microsoft Project Server) 権限と共にサイトに追加されます。

  • プロジェクトのプロジェクト サイトを表示する権限を持つその他の Project Server ユーザーが、閲覧者 (Microsoft Project Server) 権限と共にサイトに追加されます。

このオプションを無効にすると、Project Server ユーザーがサイトに自動的に追加されることはなくなりますが、既に追加されたユーザーは削除されません。

プロジェクト サイト権限の設定を無効にするには

  1. [サーバー設定] ページの [運用ポリシー] セクションで、[プロジェクト サイトの準備の設定] をクリックします。

  2. [プロジェクト サイトの準備の設定] ページの [プロジェクト サイト権限] セクションで、[プロジェクト サイトの作成時、プロジェクト マネージャーによる Project Server へのプロジェクト発行時、および Project Server でのユーザー権限の変更時に、Project Web App ユーザーを自動的にプロジェクト サイトと同期する] チェック ボックスをオフにします。

    チェック ボックスをオフにすると、Project Server ユーザーはプロジェクト サイトと同期しなくなります。

  3. [保存] をクリックします。

プロジェクト サイト権限の設定の詳細については、「プロジェクト サイトの準備の設定 (Project Server 2010 の設定)」を参照してください。

プロジェクト サイトへのユーザー数の推奨ユーザー数制限超過に関連付けられたエラー

推奨ユーザー数を超えるユーザーがプロジェクト サイトにアクセスしたことが原因で Project Server 展開にパフォーマンスの問題が発生している場合に、ULS ログに表示される可能性があるエラーを以下に示します。(おそらく、リソースを非アクティブ化したことで) 問題を発生させたユーザーの [ユーザーの編集] ページの [保存] ボタンは、通常、"クリックされた" 状態のままになり、最終的には、"予期しないエラーが発生しました" というメッセージが表示されます。ULS ログに含まれる相互関係 ID は SQL デッドロックに関連するデータを提供します。"クリティカル" レベルのエントリは次のようになります。

  • 08/10/2011 12:17:02.85 w3wp.exe (0x2178) 0x314C SharePoint Foundation Database 5586 Critical Unknown SQL Exception 1205 occurred. Additional error information from SQL Server is included below. Transaction (Process ID 80) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. 886d9cdd-5c0c-4f3a-8f89-f4e8c92acde3

問題を発生させたクエリに関する情報を提供する "高" レベルのエラーのテキストは次のようになります。ここで示すエントリはかなり短縮されていますが、重要な "proc_SecRemoveUserFromSite" テキストに注意してください。


  • 08/10/2011 12:17:06.97 w3wp.exe (0x2178) 0x314C SharePoint Foundation Database tzkv High SqlCommand: 'SET NOCOUNT ON; DECLARE @DN nvarchar(256),@LN nvarchar(128),@@DocUIVersion int,@@S uniqueidentifier,@@Level tinyint; DECLARE @ItemId int; DECLARE @@iRet int; DECLARE @ExtraItemSize int; SET @@Level = 1; SET @@S=@wssp0; EXEC @@iRet = proc_SecRemoveUserFromSite @@S, @wssp1, @wssp2 SELECT @ItemId = @wssp3 IF @@iRet <> 0 BEGIN GOTO DONE; END ;BEGIN TRAN IF NOT EXISTS( SELECT tp_ID FROM UserData WHERE tp_ListId = '06C8C9BB-B10B-4042-8859-9F9985E73E76' AND tp_ID = @ItemId AND tp_Level = 1 AND tp_RowOrdinal =0) BEGIN SELECT @ExtraItemSize = 0 EXEC @@iRet = proc_AddListItem @SiteId….

"予期しない" レベル エントリが生成される場合もあります。このエントリは次のようになります。


  • 08/10/2011 12:17:06.97 w3wp.exe (0x2178) 0x314C SharePoint Foundation Runtime tkau Unexpected System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x80131904 at Microsoft.SharePoint.Library.SPRequestInternalClass.UpdateMembers(String bstrUrl, UInt32 dwObjectType, String bstrObjId, Guid& pguidScopeId, Int32 lGroupID, Int32 lGroupOwnerId, Object& pvarArrayAdd, Object& pvarArrayAddIds, Object& pvarArrayLoginsRemove, Object& pvarArrayIdsRemove, Boolean bRemoveFromCurrentScopeOnly, Boolean bSendEmail) at Microsoft.SharePoint.Library.SPRequest.UpdateMembers(String bstrUrl, UInt32 dwObjectType, String bstrObjId, Guid& pguidScopeId, Int32 lGroupID, Int32 lGroupOwnerId, Object& pvarArrayAdd, Object& pvarArrayAddIds, Object& pvarArrayLoginsRemove, Object& pvarArrayIdsRemove, Boolean bRemoveFromCurrentScopeOnly, Boolean bSendEmail) 886d9cdd-5c0c-4f3a-8f89-f4e8c92acde3

サーバーは、15 ~ 30 分間、応答しない可能性があります。この間、他のユーザーのページではタイムアウト エラーが発生します。ULS ログには、次のエントリが表示されることがあります。


  • 08/10/2011 12:20:22.30 w3wp.exe (0x1228) 0x1454 SharePoint Foundation Monitoring b4ly High Leaving Monitored Scope (ExecuteStoredProcedureDataReader -- MSP_AUTH_GETUSERBYNAME). Execution Time=120002.728838442 2be0491a-a64b-4237-8cfc-40342a374d49

  • 08/10/2011 12:20:22.30 w3wp.exe (0x1228) 0x1454 Project Server General 8ym5 Monitorable PWA:http://<server>/PWA, ServiceApp:Project Web App Service Application, User:, PSI: SqlException occurred in DAL: <Error><Class>0</Class><LineNumber>0</LineNumber><Number>-2</Number><Procedure></Procedure> <Message> System.Data.SqlClient.SqlError: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. </Message> <CallStack> at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at …