Problembeschreibung
Die Anzahl der Schatten Datensätze, die in Microsoft Project Server 2010 Anstieg Feld ein Enterprise-Attribut generiert werden. Dieses Problem beeinträchtigt die Leistung.
Problemlösung
Um dieses Problem zu beheben, wenden Sie folgendes Hotfix-Paket an:
2597138 Beschreibung des Project Server 2010-Hotfixpaket (Pjsrvwfe-X-none.msp): 28. Februar 2012
Weitere Informationen
Dieser Hotfix verwaltet die Anzahl der Schatten Datensätze so, dass die Anzahl von Datensätzen nicht zu viel. Jedes Mal, die Sie öffnen oder speichern einen Projektplan in Project Professional nach Hotfixes in Projektserver die Datensätze der Schatten für das Projekt sind werden bereinigt. Wenn Sie Datensätze der Schatten in loser bereinigen möchten, können Sie das folgende Skript. Stellen Sie das Skript ausführen, lesen Sie die folgenden Punkte:
-
Erstellen Sie eine Sicherungskopie der Project Server-Datenbank vor dem Ausführen des Skripts.
-
Um unerwartete Datenbank Inhalte zu vermeiden, Beenden der Warteschlange auf den Anwendungsservern Projekt bei keine Aktivität auf dem Server mehrere Stunden.
-
Überprüfen des Skripts in einer Umgebung mit der aktuellen Sicherung der Project Server-Datenbank.
-
Wie lange dauert, führen Sie das Skript in der Zeit. Die Zeit, die erforderlich ist, um das Skript löschen abgeschlossen hängt von SQL Server und die Anzahl der Datensätze, die entfernt werden. Stellen Sie sicher, dass das Skript innerhalb der vorgesehenen Zeit abgeschlossen ist.
Um die Datensätze der Schatten in loser bereinigen, gehen Sie folgendermaßen vor:
-
Führen Sie das folgende Skript auf dem Entwurf und der veröffentlichten Datenbank und freien Speicherplatz in der Datenbank:
--Clean up MSP_TASK_CUSTOM_FIELD_VALUES_SHADOW
IF object_id('tempdb..#TempTaskCFShadow') IS NOT NULL BEGIN drop table #TempTaskCFShadow END CREATE table #TempTaskCFShadow (pid uniqueidentifier, tid uniqueidentifier, revCount int, mdpid uniqueidentifier) INSERT #TempTaskCFShadow (pid, tid, revCount, mdpid) SELECT PROJ_UID, TASK_UID, MAX(DELETED_REV_COUNTER), MD_PROP_UID FROM MSP_TASK_CUSTOM_FIELD_VALUES_SHADOW GROUP BY PROJ_UID , TASK_UID, MD_PROP_UID DELETE FROM MSP_TASK_CUSTOM_FIELD_VALUES_SHADOW FROM MSP_TASK_CUSTOM_FIELD_VALUES_SHADOW as originalTable, #TempTaskCFShadow AS newtable where originalTable.MD_PROP_UID = newtable.mdpid AND originalTable.PROJ_UID = newtable.pid AND originalTable.TASK_UID = newtable.tid AND originalTable.DELETED_REV_COUNTER <> newtable.revCount DROP TABLE #TempTaskCFShadow --Clean up MSP_ASSN_CUSTOM_FIELD_VALUES_SHADOW IF object_id('tempdb..#TempAssnCFShadow') IS NOT NULL BEGIN drop table #TempAssnCFShadow END CREATE table #TempAssnCFShadow (pid uniqueidentifier, asid uniqueidentifier, revCount int, mdpid uniqueidentifier) INSERT #TempAssnCFShadow (pid, asid, revCount, mdpid) SELECT PROJ_UID, assn_uid, MAX(DELETED_REV_COUNTER), MD_PROP_UID FROM MSP_ASSN_CUSTOM_FIELD_VALUES_SHADOW GROUP BY PROJ_UID , ASSN_UID, MD_PROP_UID DELETE FROM MSP_ASSN_CUSTOM_FIELD_VALUES_SHADOW FROM MSP_ASSN_CUSTOM_FIELD_VALUES_SHADOW as originalTable, #TempAssnCFShadow AS newtable where originalTable.MD_PROP_UID = newtable.mdpid AND originalTable.PROJ_UID = newtable.pid AND originalTable.ASSN_UID= newtable.asid AND originalTable.DELETED_REV_COUNTER <> newtable.revCount DROP TABLE #TempAssnCFShadow --Clean up MSP_PROJ_RES_CUSTOM_FIELD_VALUES_SHADOW IF object_id('tempdb..#TempProjResCFShadow') IS NOT NULL BEGIN drop table #TempProjResCFShadow END CREATE table #TempProjResCFShadow (pid uniqueidentifier, resid uniqueidentifier, revCount int, mdpid uniqueidentifier) INSERT #TempProjResCFShadow (pid, resid, revCount, mdpid) SELECT PROJ_UID, RES_UID, MAX(DELETED_REV_COUNTER), MD_PROP_UID FROM MSP_PROJ_RES_CUSTOM_FIELD_VALUES_SHADOW GROUP BY PROJ_UID , RES_UID, MD_PROP_UID DELETE FROM MSP_PROJ_RES_CUSTOM_FIELD_VALUES_SHADOW FROM MSP_PROJ_RES_CUSTOM_FIELD_VALUES_SHADOW as originalTable, #TempProjResCFShadow AS newtable where originalTable.MD_PROP_UID = newtable.mdpid AND originalTable.PROJ_UID = newtable.pid AND originalTable.RES_UID = newtable.resid AND originalTable.DELETED_REV_COUNTER <> newtable.revCount DROP TABLE #TempProjResCFShadow --Clean up MSP_PROJ_CUSTOM_FIELD_VALUES_SHADOW IF object_id('tempdb..#TempProjCFShadow') IS NOT NULL BEGIN drop table #TempProjCFShadow END CREATE table #TempProjCFShadow (pid uniqueidentifier, revCount int, mdpid uniqueidentifier) INSERT #TempProjCFShadow (pid, revCount, mdpid) SELECT PROJ_UID, MAX(DELETED_REV_COUNTER), MD_PROP_UID FROM MSP_PROJ_CUSTOM_FIELD_VALUES_SHADOW GROUP BY PROJ_UID , MD_PROP_UID DELETE FROM MSP_PROJ_CUSTOM_FIELD_VALUES_SHADOW FROM MSP_PROJ_CUSTOM_FIELD_VALUES_SHADOW as originalTable, #TempProjCFShadow AS newtable where originalTable.MD_PROP_UID = newtable.mdpid AND originalTable.PROJ_UID = newtable.pid AND originalTable.DELETED_REV_COUNTER <> newtable.revCount DROP TABLE #TempProjCFShadow -
Führen Sie das folgende Skript in der Datenbank veröffentlicht, nachdem Sie das Skript in Schritt 1 auf dem Entwurf und der veröffentlichten Datenbank ausführen:
--Clean up MSP_RES_CUSTOM_FIELD_VALUES_SHADOW
IF object_id('tempdb..#TempResCFShadow') IS NOT NULL BEGIN drop table #TempResCFShadow END CREATE table #TempResCFShadow (resid uniqueidentifier, revCount int, mdpid uniqueidentifier) INSERT #TempResCFShadow (resid, revCount, mdpid) SELECT RES_UID, MAX(DELETED_REV_COUNTER), MD_PROP_UID FROM MSP_RES_CUSTOM_FIELD_VALUES_SHADOW GROUP BY RES_UID, MD_PROP_UID DELETE FROM MSP_RES_CUSTOM_FIELD_VALUES_SHADOW FROM MSP_RES_CUSTOM_FIELD_VALUES_SHADOW as originalTable, #TempResCFShadow AS newtable where originalTable.MD_PROP_UID = newtable.mdpid AND originalTable.RES_UID = newtable.resid AND originalTable.DELETED_REV_COUNTER <> newtable.revCount DROP TABLE #TempResCFShadow
Status
Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Eigenschaften“ aufgeführt sind.