Symptomen
Het aantal records in tabel schaduw die worden gegenereerd in een toename van het veld ondernemingsmarkeringen snel in Microsoft Project Server 2010. Dit probleem leidt tot verlaagde prestaties.
Oplossing
Dit probleem oplossen door de volgende hotfix-pakket van toepassing:
Beschrijving van het hotfixpakket voor Project Server 2010 (Pjsrvwfe-x-none.msp) 2597138 : 28 februari 2012
Meer informatie
Deze hotfix beheert het aantal records in tabel schaduw, zodat het aantal records niet te veel groter. Elke keer dat u wilt openen of opslaan in een projectplan in Project Professional nadat u de hotfix op de Project-server toepassen, de schaduw tabelrecords die relevant voor het project zijn worden opgeschoond. Als u opruimen van records in de tabel schaduw in bulk wilt, kunt u het volgende script gebruiken. Voordat u het script uitvoert, moet u de volgende punten te lezen:
-
Maak een reservekopie van de database van Project server voordat u het script uitvoert.
-
Stop de wachtrijservice onverwachte database-inhoud om problemen te voorkomen, op de Project application servers wanneer er geen activiteit op de servers voor enkele uren is.
-
Het script in een ontwikkelomgeving valideren met behulp van de huidige back-up van de database van Project server.
-
Tijd, hoe lang het duurt om te voltooien van het script in de ontwikkelomgeving. De tijd die nodig is voor het voltooien van het script verwijderen is afhankelijk van de SQL-server en het nummer van de records die moeten worden verwijderd. Zorg ervoor dat het script wordt voltooid binnen de geplande tijd.
Als u wilt opruimen schaduw tabelrecords in bulk, volg deze stappen:
-
Voer het volgende script in het concept en de gepubliceerde database en de vrije schijfruimte in de databases opnieuw:
--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 -
Voer het volgende script op de gepubliceerde database nadat u het script uit stap 1 op het concept en de gepubliceerde database uitvoeren:
--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 heeft bevestigd dat dit probleem kan optreden in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op'.