Buenas,
En el post de hoy queríamos tratar un tema que nos ha parecido interesante, acerca de cómo administrar un elevado número de usuarios, en un entorno de Project Server 2010, y tratar de evitar problemas de rendimiento, causados precisamente por este número elevado . El artículo oficial de Technet puede encontrarse en este enlace:
http://technet.microsoft.com/es-es/library/hh670402.aspx
Cuando tenemos que tratar con muchos usuarios en nuestro entorno de Project Server 2010, es conveniente que tengamos determinados conceptos muy claros, para evitar que el rendimiento sea un contratiempo. Dichos conceptos son los siguientes:
Hemos realizado aquí un breve resumen de los distintos puntos que se mencionan en el artículo, pero la recomendación es que os lo leais entero, y no nos perdamos nada de lo que se indica en él, ya que se mencionan conceptos claves para evitar problemas de rendimiento al trabajar con números elevados de usuarios.
Esperamos os resulte de interés, un saludo
Jorge Puig
En el post de hoy queríamos volver a hablar del post que publicamos en su día, acerca de las prácticas recomendadas para mantener la integridad del trabajo actual:
http://blogs.technet.com/b/elfarodeprojectserver/archive/2011/12/15/project-server-2010-documentacion-practicas-recomendadas-para-mantener-la-integridad-del-trabajo-actual.aspx
Donde apuntábamos al enlace de Technet donde se habla de estas cuestiones:
http://technet.microsoft.com/en-us/library/hh694531.aspx
Ha habido varias consultas, acerca de cómo estaba funcionando esto ahora, y si había habido cambios relevantes desde la aparición de varias actualiazciones acumulativas que han introducido cambios relevantes; se han escuchado también comentarios del tipo “esto antes funcionaba de otra manera”, etc
Nos gustaría tratar de aclarar esto, e indicar cómo funciona en la actualidad:
La información que indiquemos desde Project PRO será añadido al parte de horas, sólo cuando éste sea creado, y no se añadirá más información de manera automática después de esto.
Para que la información que hayamos añadido posteriormente en Project PRO, aparezca en el parte de horas, debemos utilizar el botón”Importar” en la cinta del parte de horas, y seleccionar Importar progreso de la tarea. Deberemos saber el período en el tiempo que introducimos el trabajo actual en el proyecto y tarea. Después deberemos seleccionar el parte de horas y seleccionar la casilla de verificación junto a la tarea, y pinchar sobre Importar \ Importar Progreso de Tarea. Una vez hecho esto, debiéramos ser capaces de ver los valores mencionados en el parte de horas.
Esperamos os resulte de utilidad, un saludo
En este post os queríamos hacer llegar una serie de informes que se han publicado en Technet, y que consideramos os puedan resultar interesantes.
Project Spend Report
http://gallery.technet.microsoft.com/Spend-Report-86e15e11
Project Burn and Forecast Report
http://gallery.technet.microsoft.com/Burn-and-Forecast-Report-5e0f4b89
Ambas soluciones pueden ser desplegadas y probadas con la máquina virtual de demo para Project Server 2010:
http://blogs.msdn.com/b/jkalis/archive/2011/10/26/project-2010-demo-pack-version-2-now-available-to-partners.aspx
Con ellas podemos hacer estimaciones de costos, basándonos en el plan de costos, y permiten estimar lo que vamos a gastar en el futuro, o incluso hacer estimaciones en el supuesto de que nuestro presupuesto se viera afectado.
Estas soluciones intentan mostrarnos la extensa capacidad de información que podemos generar con informes en Project server 2010. Debemos tener en cuenta que no están soportadas por el Soporte Premier de Microsoft.
Si quisiéramos modificarlas, lo recomendable es que contacteis con MCS, o algún partner, que pueda ayudaros a alcanzar los objetivos que querais alcanzar con ellas
Nos permitimos mostraros algunas capturas de pantalla:
Microsoft Project Server: Burn and Forecast Report
Microsoft Project Server: Project Spend Report
Bueno, esperamos os resulte de interés.
Un saludo
Hola, buenas
en este post queremos haceros partícipes del siguiente artículo:
http://support.microsoft.com/kb/2598007
Donde se mencionan los problemas de rendimiento que podemos tener cuando aumentan rápidamente el número de registros de las Shadow Tables.
Este hotfix administra el número de registros de la “tabla de sombra”, para que el número de registros no aumente demasiado.
Independientemente, nos indican la posibilidad de usar el siguiente script para limpiar los registros de las “shadow tables” de manera genérica.
Antes de ejecutar el script, es conveniente tener en cuanta los siguientes puntos:
El script que mencionamos anteriomente es el siguiente:
1.- Debemos ejecutar el siguiente script en las bases de datos de Draft y Published:
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
--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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2.- Después de ejecutar el script 1 en las bases de datos Draft y Published, debemos ejecutar el siguiente script, sólo en la base de datos Published:
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
--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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>