Project Server 2010 の修正プログラム パッケージ (Pjsrvwfe x none.msp): 2012 年 3 月 9 日

マイクロソフト内部サポート情報

BUG #: 164609 (コンテンツ管理)

概要

この資料では、2012 年 3 月 9 日の日付が Project Server 2010 の修正プログラム パッケージで修正されている Microsoft Project Server 2010 の問題について説明します。

はじめに

この修正プログラム パッケージで修正される問題

プロジェクト Web アプリケーション (PWA) で、[プロジェクト センター] ページにアクセスしようとしてページが読み込まれない場合は、"不明なエラー"というエラー メッセージが表示されます。さらに、プロジェクトのプロジェクト詳細ページ (PDP) の情報を編集すると、エンタープライズ プロジェクト ユーザー設定フィールドの 1 つ以上の値が表示されます。

マイクロソフト内部サポート情報

BUG #: 32642 (OfficeQFE)

解決策

次の修正プログラムは、マイクロソフトから使用できます。検出し、この問題が発生する重複レコードをクリーンアップするために必要な手順について説明します。この修正プログラムを適用した後は、次のクリーンアップ スクリプトを実行してください。のみ、1 回のクリーンアップ スクリプトを実行する必要があります。

スクリプトは、以下の操作を実行します。

  • 1 のスクリプトは、この問題が発生しているし、影響を受けるプロジェクトとカスタム フィールドを表示するかどうかを検出します。

  • 2 のスクリプトは、影響を受けるテーブルをバックアップします。

  • スクリプト 3 では、重複レコードを削除します。

  • 4 のスクリプトでは、バックアップのテーブルからレコードを復元することによって、削除を元に戻します。

  • 5 のスクリプトは、バックアップのテーブルを削除します。

運用環境でスクリプトを実装する前に、結果を検証できるように、開発環境のクリーンアップ スクリプトをテストすることを強くお勧めします。さらに、ネットワーク上のユーザーのアクティビティがない場合、だけこの操作を実行する必要があります。

スクリプト 1

次の SQL クエリでは、この問題は、データベース内に存在ことを確認します。行が返されない場合、この問題が発生しません。クエリの最初の行のプレース ホルダーの値で、Project Server の発行済みデータベース名に置き換えてください。

USE <ProjectServer_Published>
SELECT CFV.PROJ_UID, MP.PROJ_NAME, CFV.MD_PROP_UID, CFPV.MD_PROP_NAME, COUNT (*) TOTALCOUNT FROM MSP_PROJ_CUSTOM_FIELD_VALUES AS CFV
INNER JOIN MSP_PROJECTS AS MP ON CFV.PROJ_UID=MP.PROJ_UID
INNER JOIN MSP_CUSTOM_FIELDS_PUBLISHED_VIEW AS CFPV
ON CFV.MD_PROP_UID=CFPV.MD_PROP_UID
where CFPV.MD_PROP_MAX_VALUES=1
GROUP BY CFV.PROJ_UID,MP.PROJ_NAME, CFV.MD_PROP_UID, CFPV.MD_PROP_NAME HAVING COUNT (*) >1
ORDER BY TOTALCOUNT DESC


スクリプト 2

2 のスクリプトでは、MSP_PROJ_CUSTOM_FIELD_VALUES_Backup という名前で、MSP_PROJ_CUSTOM_FIELD_VALUES テーブル内のレコードをバックアップするテーブルを作成します。スクリプト 3 を実行する前に、一度このスクリプトを実行することを確認します。3 のスクリプトによって実行されるクリーンアップ操作を元に戻す場合は、2 のスクリプトを再実行できます。

USE <ProjectServer_Published>
SELECT * INTO MSP_PROJ_CUSTOM_FIELD_VALUES_BACKUP FROM MSP_PROJ_CUSTOM_FIELD_VALUES



スクリプト 3

スクリプト 3 では、この問題が発生しているかどうかを最初に検出されます。この問題が発生しない場合、アクションは実行されません。、この問題が発生する場合、スクリプトは、重複レコードを削除します。

USE <ProjectServer_Published>
DECLARE @ITERATIONS AS INT
SET @ITERATIONS=
(SELECT TOP 1 COUNT (*) TOTALCOUNT FROM MSP_PROJ_CUSTOM_FIELD_VALUES AS CFV
INNER JOIN MSP_PROJECTS AS MP ON CFV.PROJ_UID=MP.PROJ_UID
INNER JOIN MSP_CUSTOM_FIELDS_PUBLISHED_VIEW AS CFPV ON CFV.MD_PROP_UID=CFPV.MD_PROP_UID
INNER JOIN MSP_CUSTOM_FIELDS AS CF ON CFV.MD_PROP_UID = CF.MD_PROP_UID
WHERE CF.MD_PROP_MAX_VALUES=1
GROUP BY CFV.PROJ_UID,MP.PROJ_NAME, CFV.MD_PROP_UID, CFPV.MD_PROP_NAME
HAVING COUNT (*) >1
ORDER BY TOTALCOUNT DESC )-1

IF @ITERATIONS IS NULL
BEGIN
PRINT 'DID NOT FIND ANY DUPLICATES TO PROCESS'

END
ELSE
BEGIN

PRINT 'TOTAL ITERATIONS TO PROCESS: '
PRINT @ITERATIONS

WHILE @ITERATIONS <>0
BEGIN
PRINT 'ITERATION COUNT: '
PRINT @ITERATIONS

DECLARE @PROJ_UID AS UNIQUEIDENTIFIER
DECLARE @MD_PROP_UID AS UNIQUEIDENTIFIER
DECLARE @MOD_DATE AS DATETIME
DECLARE ACDELETEDUPLICATERECORDS CURSOR FOR

SELECT PROJ_UID, MD_PROP_UID, MIN(MOD_DATE) AS MOD_DATE FROM MSP_PROJ_CUSTOM_FIELD_VALUES WHERE PROJ_UID IN
(
SELECT CFV.PROJ_UID FROM MSP_PROJ_CUSTOM_FIELD_VALUES AS CFV
INNER JOIN MSP_PROJECTS AS MP ON CFV.PROJ_UID=MP.PROJ_UID
INNER JOIN MSP_CUSTOM_FIELDS_PUBLISHED_VIEW AS CFPV
ON CFV.MD_PROP_UID=CFPV.MD_PROP_UID
INNER JOIN MSP_CUSTOM_FIELDS AS CF
ON CFV.MD_PROP_UID = CF.MD_PROP_UID
WHERE CF.MD_PROP_MAX_VALUES=1
GROUP BY CFV.PROJ_UID,MP.PROJ_NAME, CFV.MD_PROP_UID, CFPV.MD_PROP_NAME HAVING COUNT (*) >1
)
AND MD_PROP_UID IN
(
SELECT CFV.MD_PROP_UID FROM MSP_PROJ_CUSTOM_FIELD_VALUES AS CFV
INNER JOIN MSP_PROJECTS AS MP ON CFV.PROJ_UID=MP.PROJ_UID
INNER JOIN MSP_CUSTOM_FIELDS_PUBLISHED_VIEW AS CFPV
ON CFV.MD_PROP_UID=CFPV.MD_PROP_UID
INNER JOIN MSP_CUSTOM_FIELDS AS CF
ON CFV.MD_PROP_UID = CF.MD_PROP_UID
WHERE CF.MD_PROP_MAX_VALUES=1
GROUP BY CFV.PROJ_UID,MP.PROJ_NAME, CFV.MD_PROP_UID, CFPV.MD_PROP_NAME HAVING COUNT (*) >1
)

GROUP BY PROJ_UID, MD_PROP_UID
HAVING COUNT (*) >1
ORDER BY PROJ_UID

OPEN ACDELETEDUPLICATERECORDS
FETCH NEXT FROM ACDELETEDUPLICATERECORDS
INTO @PROJ_UID, @MD_PROP_UID, @MOD_DATE
WHILE @@FETCH_STATUS =0

BEGIN

DELETE FROM MSP_PROJ_CUSTOM_FIELD_VALUES
WHERE PROJ_UID=@PROJ_UID
AND MD_PROP_UID=@MD_PROP_UID
AND MOD_DATE=@MOD_DATE

FETCH NEXT FROM ACDELETEDUPLICATERECORDS
INTO @PROJ_UID, @MD_PROP_UID, @MOD_DATE

END

CLOSE ACDELETEDUPLICATERECORDS
DEALLOCATE ACDELETEDUPLICATERECORDS

SET @ITERATIONS = @ITERATIONS-1
END
END


スクリプト 4

のみ 3 のスクリプトによって実行されるクリーンアップ操作を元に戻したい場合は、4 のスクリプトを実行します。ほとんどの場合、このスクリプトを使用する必要はありません。ただし、必要な場合に、スクリプトが用意されています。4 のスクリプトは、レコードが 2 のスクリプトのバックアップを復元することによって機能します。

ヘルプを表示

スキルを磨く
トレーニングの探索
新機能を最初に入手
Microsoft Insider に参加する

この情報は役に立ちましたか?

フィードバックをお送りいただきありがとうございます!

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×