SSD: el síndrome de la Sharepoint dependencia

Sharepoint me proporciona seguridad y me hace sentir más fuerte. Las 10 cosas que más me gustan de Sharepoint.

10 puntos para entender a Project Server 2010

Microsoft Project es quizá la herramienta de gestión de proyectos más conocida y utilizada por los líderes de proyectos...

Diseño Gráfico en SharePoint

Serie de artìculos que nos ayudan a incorporar diseño gráfico en las implementaciones de SharePoint...

Revista CompartiMOSS

Artículos publicados en la revista especializada en SharePoint: CompartiMOSS.

Contacto

Enviame un correo :-)

viernes, 29 de junio de 2012

Mejoras al rendimiento de Project Server 2007 [Parte 1]

Este artículo es el primero de una serie de artículos sobre la mejora en el rendimiento de Project Server.  En este  primer documento se describen buenas prácticas de mantenimiento de la base de datos de Project Server 2007, lo que incluye fundamentalmente:

  1. La verificación de la integridad de la BD
  2. La desfragmentación de índices, reorganizándolos o reconstruyéndolos.
  3. La configuración del “fill factor”
  4. El monitoreo del tamaño de la base de datos

En el documento se explica en detalle los puntos 1 y 2. Para mayor información sobre los puntos 3 y 4, consultar el siguiente artículo: http://surpoint.blogspot.com.ar/2012/03/sharepoint-2007monitoreo-de-la-la-base.html

Incluye además pruebas realizadas en un ambiente de estas características:

  • Project Server 2007 con Services Pack 3
  • Windows SharePoint Services 3.0 con Services Pack 3
  • SQL Server 2005 con Service Pack 4(importante, no aplicar este procedimiento si no se aplicó SP2 de SQL Server)

 

Introducción

Antes de comenzar, es importante recordar que Project Server tiene 4 bases de datos:

  • Draft
  • Published
  • Archive
  • Reporting

Draft soporta la información de los proyectos aún no publicados, no tiene comunicación con Project Web Access. Maneja también las tablas utilizadas por el servicio de cola de Project Server.

Published almacena los proyectos publicados que pueden ser accedidos desde PWA. También incluye información específica de PWA como timesheets, vistas o la definición propia de los campos personalizados.

Archive almacena copias de seguridad en línea.

Reporting contiene la información de Published, pero optimizada para reportes y para la carga de los cubos OLAP. Se actualiza prácticamente en tiempo real, es sencilla de entender y está optimizada para operaciones de lectura.

Además existen las bases de datos de SharePoint:

  • Una o más bases de datos de contenido.
  • La base de datos de configuración de SharePoint.
  • Una o más bases de datos de SSP.

Más información en: http://technet.microsoft.com/en-us/library/cc973099(v=office.12)

 

Antes de comenzar

Antes de comenzar con las tareas e mantenimiento, verificar que:

  • Tengamos los backups de nuestras bases de datos
  • Sepamos el tiempo de ejecución de las tareas y el impacto que puedan ocasionar
  • Planificar la ejecución de estas tareas, fuera del horario de trabajo, dentro de lo posible

Algunas buenas prácticas a tener en cuenta para nuestro plan de mantenimiento:

  • Aplicar reorganización de índices o reconstrucción, no ambas.
  • Comenzar siempre por el chequeo de integridad y no continuar si este falla.
  • En SharePoint, la única base sobre la que puede ser necesario reducir tamaño (shrink) es la base de contenido. No suele ser necesario y podría generar fragmentación si lo hacemos sobre las bases de configuración, SSP, búsqueda o incluso la BD de contenido de Central Administration.

Algunas otras recomendaciones pueden ser consultadas en este artículo: http://technet.microsoft.com/en-us/library/cc973104(v=office.12)

 

Verificación de integridad de la Base de Datos

Este primer paso se ejecuta para cada base de datos desde SQL Server Management Studio. Utilizamos DBCC CHECKDB. Más información en http://msdn.microsoft.com/en-us/library/ms180226.aspx

USE ProjectServer_Draft

DBCC CHECKDB

USE ProjectServer_Published

DBCC CHECKDB

USE ProjectServer_Reporting

DBCC CHECKDB

USE ProjectServer_Archive

DBCC CHECKDB

USE WSS_Content

DBCC CHECKDB

USE SharedServices1_DB

DBCC CHECKDB

USE SharePoint_Config

DBCC CHECKDB

Si no encontramos problemas, debería aparecer un mensaje como el siguiente:

DBCC results for 'ProjectServer_Draft'.

...

CHECKDB found 0 allocation errors and 0 consistency errors in database 'SharePoint_Config'.

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Las pruebas realizadas en un ambiente de prueba arrojaron estos tiempos:

Base de Datos

Tiempo

Draft

2 minutos

Published

3 minutos

Reporting

2 minutos

Archive

2 minutos

SharePoint – Contenido

1 minuto

SharePoint – Configuración

Despreciable

SharePoint – SSP

Despreciable

Total

10 minutos

 

Desfragmentación de índices - Análisis

Comenzamos por medir el estado de desfragmentación de la base de datos utilizando sys.dm_db_index_physical_stats. Más información en http://technet.microsoft.com/en-us/library/ms188917(SQL.90).aspx

Si especificamos todos los parámetros en nulo, medirá todo lo que tenemos en la instancia de SQL Server. Si necesitamos ejecutarlo para una base en particular, podemos especificar el ID de la base de datos. Para conocer el ID de la base de datos utilizamos BD_ID. Más información en http://technet.microsoft.com/en-us/library/ms186274(v=sql.90).aspx

Para comenzar, vamos a verificar los índices de la base de datos Draft de la siguiente forma:

USE ProjectServer_Draft

SELECT DATABASE_ID,

CAST(DB_NAME(DATABASE_ID) AS VARCHAR(30)) AS 'DatabaseName',

CAST(OBJECT_NAME([OBJECT_ID]) AS VARCHAR(40)) AS 'TableName',

INDEX_ID,

CAST(INDEX_TYPE_DESC AS VARCHAR(30)) AS INDEX_TYPE_DESC,

AVG_FRAGMENTATION_IN_PERCENT

FROM SYS.DM_DB_INDEX_PHYSICAL_STATS (DB_ID(N'ProjectServer_Draft'),NULL,NULL,NULL,NULL )

ORDER BY AVG_FRAGMENTATION_IN_PERCENT DESC;

Es importante manejarse con cuidado a la hora de pasar parámetros a este procedimiento usando funciones del sistema. Para mayor información, consultar la sección “Using System Functions to Specify Parameter Values” en este enlace: http://msdn.microsoft.com/en-us/library/ms188917.aspx

Debemos esperar un valor que tienda a 0 y que en lo posible no supere el 10% en el campo AVG_FRAGMENTATION_IN_PERCENT.

Obtendremos un resultado de este tipo:

clip_image002

Continuamos con la base Published. El resultado es el siguiente:

clip_image004

Realizamos el mismo proceso con el resto de las bases de datos. A continuación los tiempos de ejecución:

Base de Datos

Tiempo

Draft

Medio minuto

Published

Medio minuto

Reporting

Medio minuto

Archive

1 minuto

SharePoint – Contenido

Medio minuto

Total

Las acciones a tomar pueden depender del nivel de fragmentación:

Acción

Nivel de fragmentación

Reorganización

Hasta 10%

Reonstrucción

10% a 75%

Reconstrucción fuera de línea

Más del 75%

En SharePoint no están soportados los comandos DROP INDEX y CREATE INDEX, en su lugar se debe usar ALTER. En rigor, para desfragmentar los índices de SharePoint, se recomienda ejecutar el procedimiento almacenado tal como se indica en este artículo: http://support.microsoft.com/kb/943345/en-us

Para ProjectServer, utilizaremos un asistente de plan de mantenimiento de Base de Datos.

 

Desfragmentación de Índices – Ejecución

Antes de comenzar con las tareas de re construcción de índices, vamos a tomar los tiempos que lleva la publicación de un proyecto de 2.000 tareas. Vemos en la pantalla de la cola de Project Server los resultados obtenidos: 7 minutos

clip_image006

Vamos a ejecutar el proceso de reconstrucción de índices paras las base de datos de Project Server (ya mencionamos anteriormente que el procedimiento es diferente al recomendado para SharePoint).

Para ello, creamos un plan de mantenimiento con la única opción de reconstruir los índices, recordar que ya habíamos verificado la integridad de la base de datos anteriormente. En un plan productivo, deberíamos incluir más opciones. Más información sobre planes de mantenimiento en estos enlaces:

En la siguiente imagen se ve desde dónde comenzar la creación de un plan de mantenimiento en SQL Server Management Studio:

clip_image008

Estas son las opciones elegidas:

clip_image010

Nuevamente, se necesita SP2 de SQL Server 2005, para aplicar este procedimiento.

En caso contrario, no sólo no es seguro, sino que podemos romper la base de datos.

clip_image012

clip_image014

Elegimos el lugar en donde dejar el log: C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG. Luego ejecutamos el plan de mantenimiento.

Importante:

  • Ejecutar en ambiente de prueba
  • Trabajar en conjunto con un DBA
  • Asegurarse de tener los procedimientos de backup activos.
  • Asegurarse de haber probado los procedimientos de restore.

Esta es la pantalla de inicio de la ejecución:

clip_image016

Esta es la pantalla de fin:

clip_image018

Una vez finalizado el plan, vamos a revisar el estado de fragmentación de los índices, en este caso de la base Published. El resultado se ve en la siguiente imagen:

clip_image020

Algunos cambios como el resaltado son importantes.

Al publicar nuevamente el mismo proyecto, se observa una mejora de 2 minutos, que en este caso equivale al 28% (la medición no es científica).

clip_image022

 

Conclusión

Realizar tareas de mantenimiento sobre SQL Server es una tarea relativamente sencilla, pero fundamental, ya que estamos hablando de un componente central de la arquitectura, que puede impactar en el rendimiento general.

En el caso de Project Server, la desfragmentación de índices es importante, pero debería ser combinada con otros puntos como:

  • Monitoreo de consultas de SQL
  • Monitoreo de memoria y procesador
  • Monitoreo de tamaño de la base de datos y de los logs de transacciones
  • Mantenimiento específico de las bases de datos de SharePoint
  • Monitoreo de red

Nos vemos en el próximo artículo de la serie.

viernes, 22 de junio de 2012

CompartiMOSS Número 12

Queridos lectores: quiero invitarlos nuevamente a leer CompartiMOSS, la revista especializada en tecnologías SharePoint en la que tengo el honor y el agrado de participar. En esta oportunidad, más de 40 hojas de puro SharePoint. No se la pierdan!

Contenido de esta edición:

  • Editorial
  • Desarrollo de aplicaciones Metro en Windows 8 conectadas a SharePoint (Edin Kapic)
  • Usuarios externos en SharePoint Online en Office 365 (Alberto Diaz Martin)
  • Novedades en Desarrollo para SharePoint Onpremise y Online con Visual Studio 2012 RC (Juan Carlos González Martín )
  • Exposición de un sitio web con autenticación por claims usando ADFS - Parte 2 (Diego Gatti)
  • 10 puntos para entender a Project Server 2010 (Juan Pablo Pussacq Laborde)
  • Entrevista con Vielka Rojas
  • River, el foro avanzado de SharePoint (Luis Máñez)
  • Movimiento de documentos a gestor documental (DMS) desde SharePoint 2010 (Angel Suárez Guisuraga)
  • ALM y SharePoint (I) (David Martos)
  • Introducción a PowerView sobre SharePoint 2010 (Pablo Álvarez Doval)
  • Diseño de Granjas de Servicios: Gobernabilidad de SharePoint para Corporaciones y Naciones (Juan Andrés Valenzuela Jofré )
  • Metadatos Administrados en SharePoint 2010 (Carlos Ariel Dantiags)
  • ControlPoint - Explora, Protege, Analiza y Controla (Tony Carballo)

Descarga: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx

image

lunes, 18 de junio de 2012

Diagrama de Gantt con jQuery

jueves, 14 de junio de 2012

miércoles, 13 de junio de 2012

martes, 12 de junio de 2012

¿Cómo ordenar un campo lookup por ID?

La respuesta nos la da Marcos Turrós en los foros, editando EditForm.aspx:
http://social.msdn.microsoft.com/Forums/es-ES/mossdeves/thread/3f31f461-da08-41e0-bad4-c1bf4b02bf7f
Espero les resulte útil!

lunes, 11 de junio de 2012

¿Qué es SharePoint? Video subtitulado

jueves, 7 de junio de 2012

Artículos interesantes sobre URLs amigables en SharePoint

Si se han encontrado con problemas de URLs de más de 255 caracteres en SharePoint, quizá les resulte interesante algunos de estos enlaces:

Saludos!

miércoles, 6 de junio de 2012

¿Soporta SharePoint 2010 virtualización?

La respuesta de la mano de Juan Carlos: SharePoint 2010: Soporte de virtualización!

sábado, 2 de junio de 2012

¿Cómo aplicar filtros en un campo lookup de SharePoint 2007?

El propósito de este artículo es hacer una demostración de aplicación de filtros en un campo lookup de SharePoint 2007. Para llevar adelante esta tarea trabajaremos con el proyecto de CodePlex llamado SharePoint Filtered Lookup Field que pueden acceder en este enlace: http://filteredlookup.codeplex.com/.

Las características descriptas en CodePlex para este proyecto son:

  • Lookup sobre listas que estén este sitio o en otros sitios de la misma colección
  • Filtro de datos utilizando vistas o CAML
  • Mismo look & feel que los campos estándar de SharePoint

Un punto importante a tener en cuenta es que este tipo de columna es adicional a los ya existentes en SharePoint, no se trata de una mejora al campo estándar. Por lo tanto, si lo que se quiere es aplicar los filtros en una lista ya existente, se necesita crear un campo nuevo y copiar los datos desde el campo viejo. Luego se puede eliminar el campo viejo.

En este enlace se puede encontrar información sobre la licencia de este producto: http://filteredlookup.codeplex.com/license

A continuación se detalla el paso a paso de instalación y uso.

Instalación

El proyecto está armado en un paquete de instalación de Windows que usa el instalador de soluciones de SharePoint. El primer paso es descargarlo desde: http://filteredlookup.codeplex.com/downloads/get/70292

image

Luego crear una colección de sitios de prueba y ejecutar el instalador:

image

image

image

image

image

image

 

Verificación de Instalación

Antes de empezar a utilizar el producto, verificar que esté correctamente instalado. Para ello crear una columna en una lista para verificar que exista este nuevo tipo de columna:

image

image

 

Configuración

Probar con un ejemplo sencillo. En este caso existen dos listas:

  • Una lista llamada Temas Pendientes (lista de tipo seguimiento de asuntos de SharePoint)
  • Otra lista de Clientes (con un campo estado que indica si el cliente esta activo o no)

La lista de tipo de Clientes posee 5 clientes, dos de ellos en estado inactivos:

image

Crear una vista que muestre únicamente los clientes activos:

image

En la lista de Temas Pendientes crear un campo fileteed lookup hacia la lista de Clientes, pero que únicamente muestre los clientes activos:

image

image

La configuración es tan sencilla como seleccionar la opción “Apply List View Filter” y luego elegir la lista de Activos.

 

Prueba de uso

Realizar una prueba: el primer paso es generar un alta en la lista de Temas Pendientes. Observar como sólo se muestran los 3 clientes activos:

image

image

Hacer clic sobre “Cliente 1” para probar su correcto funcionamiento:

image

Verificar qué sucede si Cliente 1 pasa a estado inactivo:

image

Al intentar modificar el tema pendiente que tenía asignado el tema 1, me permite modificar el registro con el Cliente que ahora está inactivo. Este era el funcionamiento que al menos yo esperaba:

image

Por supuesto si intento crear un nuevo tema pendiente, la opción de Cliente 1 ya no aparece:

image

Una prueba adicional es crear un vista que agrupe por este campo, para verificar que funcione de la misma forma que el campo estándar de SharePoint:

image

 

Conclusión

Ese proyecto de CodePlex permite agregar una funcionalidad muy necesaria en SharePoint, haciendo que las aplicaciones sean más amigables y permitan agregar algo de lógica de negocio. El producto funciona correctamente y es estable.

Personalmente, como contra le veo que utiliza un nuevo tipo de campo que no es el estándar de SharePoint, pero si pensamos que SharePoint ofrece la creación de este tipo de campos como forma de extender el estándar, no lo veo mal.

Por otro lado, el código fuente es público, lo cual siempre es importante, en caso que su autor discontinúe el mantenimiento del mismo o no brinde más soporte: http://filteredlookup.codeplex.com/downloads/get/70293.

También existe una versión para SharePoint 2010, que si bien escapa al alcance de este artículo su prueba de funcionamiento y su posibilidad de migración, da una idea de que es posible seguir usando el producto cuando cambiemos de versión: http://sp2010filteredlookup.codeplex.com/.