الأعراض
عدد سجلات الجدول الاحتياطية التي تم إنشاؤها زيادات حقل علامة على مستوى مؤسسة بشكل سريع في Microsoft Project Server 2010. تؤدي هذه المشكلة من مشاكل الأداء.
الحل
لحل هذه المشكلة، يتم تطبيق حزمة الإصلاحات الجديدة التالية:
وصف حزمة الإصلاحات الجديدة Project Server 2010 (بجسرفوفي-س-none.msp) 2597138 : 28 فبراير 2012
مزيد من المعلومات
هذا الإصلاح العاجل بإدارة عدد السجلات في الجدول ظل حيث أن عدد السجلات التي لا يزيد كثيرا. كل مرة تقوم بفتح أو حفظ خطة مشروع في Project Professional بعد تثبيت الإصلاح الجديد على خادم Project، ظل جدول السجلات ذات الصلة بالمشروع قد تم تنظيفها. إذا أردت تنظيف سجلات الجدول الظل بالجملة، يمكنك استخدام البرنامج النصي التالي. قبل تشغيل البرنامج النصي، تأكد من أنه يمكنك قراءة النقاط التالية:
-
عمل نسخة احتياطية من قاعدة بيانات خادم Project قبل تشغيل البرنامج النصي.
-
لتجنب المشاكل محتوى قاعدة البيانات غير متوقع، إيقاف "خدمة قائمة انتظار" على خوادم تطبيقات المشروع عند حدوث أي نشاط على الملقمات لعدة ساعات.
-
التحقق من صحة البرنامج النصي في بيئة تطوير باستخدام النسخة الاحتياطية الحالية من قاعدة بيانات خادم Project.
-
وقت كم الوقت المستغرق لإكمال البرنامج النصي في بيئة التطوير. يعتمد الوقت المطلوب لإكمال حذف البرنامج النصي SQL server وعدد السجلات التي يجب إزالتها. تأكد من اكتمال البرنامج النصي ضمن الوقت المخطط له.
لتنظيف سجلات الجدول ظل في المجمع، اتبع الخطوات التالية:
-
تشغيل البرنامج النصي التالي على قواعد بيانات المنشورة ومشروع، واستعادة مساحة حرة في قواعد البيانات:
--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 -
تشغيل البرنامج النصي التالي في قاعدة البيانات المنشورة بعد تشغيل البرنامج النصي من الخطوة 1 على قواعد بيانات مشروع والمنشورة:
--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
الحالة
أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في قسم "ينطبق على".