domingo, 27 de junio de 2010

Arrancar máquinas virtuales en físco con Hyper-V

Imagino que muchos de vosotros habreis sufrido el problema del rendimiento de muchas de vuestras máquinas de desarrollo con 4 GB de RAM al intentar arrancar máquinas virtuales con SharePoint, Visual Studio, SQL Server... Como todos sabemos, la máquina host necesita reservarse cierta cantidad de memoria para controlar la capa de virtualización y ofrecer unas mínimas garantías al sistema operativo de base, así que con un portátil de 4GB de RAM nos vemos forzado a arrancar máquinas de entre 2 y 3 GB de RAM virtualizados, que son la pesadilla de cualquier desarrollador que quiera avanzar más o menos rápido en sus proyectos.

Una buena solución en estos casos es poder arrancar la máquina virtual directamente como si fuera nuestro sistema operativo principal (arranque en físico). Es decir, no lanzar la MV desde nuestro sistema operativo normal, sino que la MV sea nuestro sistema operativo normal.

Si dispones de un sistema operativo Windows 7 o SQL Server 2008 y creas máquinas con Hyper-V, esto es bastante sencillo de conseguir. Los pasos son los siguientes:

1.-Preparar la máquina virtual en Hyper-V hasta disponer del fichero vhd correctamente configurado.
2.- Abrir una línea de comandos con permisos de administración
3.- Introducir el comando:  bcdedit /copy {default} /d "x:\x\x.vhd" sustituyendo las x por los parámetros de nuestra ruta hacia el fichero vhd.
4.- Anotamos el GUID que nos devuelve la operación anterior
5.- Introducimos el comando: bcdedit /set {GUID} device vhd=[Unidad:]\x\x.vhd donde GUID es el parámetro anotado en el punto 4, Unidad la letra de la unidad donde se encuetra el archivo vhd y x la ruta o nombre de fichero para llegar a él. Es muy importante introducir el nombre de la unidad entra corchetes [], ya que si no no funcionará bien el arranque.
6.- Introducimos el comando bcdedit /set {GUID} osdevice vhd=[D:]\x\x.vhd con las mismas observaciones que en el punto 5.
7.-Con estos pasos ya deberíamos tener configurado el arranque en físico de nuestra máquina virtual. Podemos ver la configuracion con el comando bcdedit a palo seco, donde nos mostrará información relativa a nuestra configuracion en los dispositivos de arranque y entre la cual deberíamos ver algo similar a la siguiente imagen:
A partir de aquí, cuando arranquemos nuestro PC, el sistema nos mostrará diversas opciones para elegir la carga de nuestro sistema operativo, podremos escoger entre el arranque normal, o una de las máquinas virtuales que hayamos configurado con el procedimiento anterior. Si arrancamos una máquina virtual, esta dispondrá de la totalidad de RAM y recursos del sistema, y no notaremos ninguna relentización por la capa de virtualización.

Podeis configurar el comportamiento de vuestro menú de arranque con el comando msconfig, donde podreis seleccionar que sistema arrancar por defecto o el tiempo de espera antes del arranque por defecto.
 
Siempre podeis encontrar más información en la página oficial de Microsoft.

Espero que os resulte tan útil como a mí, y podais disfrutar de vuestros entornos de SharePoint... ¡Mucho más rápidos!

domingo, 20 de junio de 2010

...y el principio de una ilusión mayor.

El próximo lunes día 21 de Junio es mi primer día como trabajador de la empresa Spenta Consulting. Lo cierto es que hace pocos meses no lo hubiera imaginado, tan inmerso como estaba en continuar creciendo en la línea de SharePoint de Near Technologies, sin embargo conozco a Spenta desde hace mucho tiempo y ellos también a mí. Desde siempre ha existido un respeto enorme al menos por mi parte y sin duda siempre ha sido el gran referente a seguir en cuanto a empresa especializada en SharePoint. Siempre hemos intentado seguir su estela, aunque sea harto difícil por tener una filosofía de empresa bastante diferente al resto.

Cuando Jordi Plana, el director general de Spenta, me hablaba de "jugar la Champions League del SharePoint" poco imaginaba que estuviera ese reto tan cerca de mi futuro, pero la enorme ambición y genial orientación de la filosofía de la empresa me han ido seduciendo igual que un buen libro que al leer la primera página uno ya no puede pensar en otra cosa más que seguir deslizándose sobre sus líneas.

Spenta es, sin lugar a dudas, el mayor referente de SharePoint en Cataluña, por la cantidad de expertos que aglutina, cantidad de proyectos realizados, calidad indiscutible de los mismos y la inversión que contínuamente está realizando en nuevas tendencias tecnológicas.

Sin ir más lejos, el año pasado ganó el premio otorgado por Microsoft al "Mejor Partner Mundial", un galardón hasta entonces nunca obtenido por una empresa española.

Me voy con la certeza de unirme a un grupo muy especializado y con el potencial de convertirse en un serio referente mundial tecnológico, con una visión estratégica que personalmente me recuerda más al modelo americano (inversión en las personas y en I+D).

Espero poder reforzar tanto como me sea posible el crecimiento y calidad de la empresa, y formar parte de ese excelso equipo de profesionales que Spenta posee. Sin duda, abarcar objetivos multinacionales, multiproducto y

Además, cuento con el honor personal de trabajar al lado de David Martos, un profesional como he conocido pocos del mundo SharePoint, y una excelente persona con la que hace tiempo he hecho migas y junto otros compañeros como Edin Kàpic y Ramón Torras hemos formado la Comunidad Catalana de SharePoint (SUG.CAT).

Personalmente estoy lleno de ilusión por formar parte del "proyecto Spenta" y continuar aprendiendo y evolucionando en el ámbito de SharePoint y todas sus tecnologías relacionadas.

Desde este blog no puedo más que agradecer la confianza que la dirección de Spenta ha puesto en mí, garantizando, como ellos ya saben, mi total implicación el el proyecto e ilusión por afrontar todos los retos que lleguemos a compartir.

Y a vosotros, lectores del Blog, espero que también os beneficie, pues cuanto más progrese el autor en su carrera profesional, mejores y más variados artículos podré compartir con todos vosotros.

El próximo post lo escribiré con el portátil de Spenta... ¡¡Confío en hacerlo durante muchos años!!

:-D

Un triste final...

Después de tres años y medio de entendimiento personal y profesional, el viernes 18 de Junio fue mi último día trabajando con la empresa Near Technologies

Me voy con la satisfacción de haber levantado y consolidado la línea de negocio de SharePoint, dejando un amplio abanico de referencias con numerosos clientes y proyectos y formado a un equipo de gente muy solvente y profesional en el amplio espectro de tecnologías vinculadas al SharePoint.

Durante el camino he recibido el cariño y la inestimable ayuda de un gran equipo de profesionales y PERSONAS (en mayúsculas) con las que ha sido un enorme placer compartir estos años de extenso recorrido. Recuerdo el día que empecé, éramos una empresa de unas 30 personas. Hoy en día ya son más de 160, y el crecimiento del beneficio neto (orgánico) en tiempos de crisis ha sido entorno del 30% anual... creo que no muchas empresas pueden aportar este dato en los tiempos que corren.

Al principio fue duro por encontrarme solo entre numerosos clientes de una tecnología que ha ido aumentando su demanda cada vez más. Muchas veces tan solo encontré respuestas en los "ecos" de mis propios pensamientos. Sin embargo la curva de aprendizaje ha sido ampliamente satisfactoria, llegando a tener el honor de ser un "punta de lanza" en SharePoint dentro de la empresa aun cuando el equipo de "sharepointers" ha ido incrementando su número cada vez más.

Desde este blog no puedo más que dar las gracias a todos mis compañeros de trabajo, por ayudarme a crecer como persona y como profesional. Sin recibir el apoyo de todos vosotros hubiera sido muy duro asumir tanta responsabilidad.

Gracias por vuestro tiempo (incluso sábados, domingos y festivos), por vuestra entrega y vuestras cálidas sonrisas y ánimos cuando siempre los necesité. Gracias por ser personas por delante de todo y hacerme sentir orgulloso de la empresa a la que he servido fielmente todo este tiempo. No puedo mas que continuar deseando más éxito y prosperidad para Near Technologies durante largos años.

Compañeros de mí línea y otras líneas, Jefes de línea,  Jefes de Proyecto, Jefes de sección, directores, directoras, gerentes de cuentas, administrativas y gente-para-todo ... Para mí habéis sido una gran familia que nunca olvidaré.

Personalmente ha sido una dura decisión dejar todo esto atrás, sin embargo nuevos retos profesionales me llaman, y hay que dejar atrás las emociones continuar evolucionando en mi carrera profesional y llegar a desplegar todo el potencial que en el fondo estoy convencido que puedo entregar al mundo del SharePoint y más allá.

Nuevos retos me esperan, y estoy a punto de embarcarme en una nueva aventura de prestigio multinacional, multiproducto y que sin duda está llamada a formar parte de la élite del SharePoint... 

Pero eso es otra historia, y debe ser contada en otro post...


jueves, 17 de junio de 2010

MSS 2010: Migración de una BD de contenido desde MOSS 2007

Recientemente he realizado una migración de una base de datos en SharePoint 2007 hacia una plataforma de SharePoint 2010, y me gustaría compartir hoy mi experiencia personal con todos vosotros.

La impresión general es que las migraciones de 2007 a 2010 han mejorado muchísimo respecto a las que pudiéramos hacer de 2003 a 2010. Al no haber un cambio de tecnología base de trasfondo (sigue siendo FrameWork .NET en C#) y al ser SharePoint 2010 un producto más evolutivo que revolucionario (2007 sí fue revolucionario), la migración es muchísimo más natural y en general da menos quebraderos de cabeza. De hecho, si nuestro entorno es totalmente out-of-the-box, la migración se hará prácticamente de forma automática. El problema, como siempre, son las personalizaciones que hayamos realizado en la plataforma 2007 (aplicaciones, webparts, webcontrols, event recivers, plantillas personalizadas, etc.). Cada personalización implantada en 2007 debe ser identificada, listada y tratada a parte en el proceso de migración, y debido a las múltiples posibilidades al respecto, en este post me centraré en mi experiencia personal para migrar una base de datos de contenido en SharePoint 2007 hacia una plataforma 2010.

Para empezar, hay que realizar unos pasos previos de preparación a la migración:

1. Asegurarse que en el entorno de 2007, la versión instalada es MOSS SP2. Sin el SP2 las bases de datos de contenido no certifican su compatibilidad con 2010.

2. Disponer de un entorrno SharePoint Server 2010 donde estén configuradas las aplicaciones de servicio básicas:
  • Servicio Conectividad a datos empresariales
  • Aplicación de Servicios de Excel
  • Servicio de metadatos administrados
  • Aplicación de servicio de búsqueda
  • Servicio de almacenamiento seguro
  • InfoPath Forms Services
3. Configurar las opciones generales de la granja de servidores.
  • Configuración de correo electrónico entrante y saliente
  • Toda la configuración de permisos y seguridad de la granja de servidores, como la adición de cuentas de usuario o grupo al grupo de administradores de la granja de servidores.
  • Tipos de archivos bloqueados
  • Plantillas de cuota
También se debe configurar todas las opciones nuevas de la granja de servidores que se desee usar, como podrían ser la "recolección de datos de mantenimiento y uso", y el "registro de diagnóstico".
5. Crear y configurar la aplicación web en la granja de 2010 donde vincularemos nuestra base de datos de contenido provinente de SharePoint 2007. Esta no tiene porque conservar el mismo nombre que la original, aunque en el caso de que hayamos utilizado URL's absolutas, deberemos ir con cuidado y revisarlas posteriormente a la migración para verificarlas o modificarlas (lo ideal sería que estuviera todo en relativo). Por ejemplo: Las rutas de nuestras fuentes de datos en Infopath 2007 son absolutas y se deberían modificar si la migración implica un cambio de ruta (por suerte, Infopath 2010 ya trabaja con rutas relativas). Otra opción sería trabajar con la misma URL que el origen, aunque añadir un "alternate access maping" para acceder via IP o nombre de servidor hasta que hagamos el cambio en la DNS corporativa hacia la nueva granja.

La aplicación web creada no debe contener ninguna colección de sitios que pueda solaparse con URL's provinentes de la migración (el caso más abitual sería la raiz "/").

Una vez realizadas las tareas anteriormente descritas, ya estaremos listos para comenzar con la migración en sí misma:

1.- Realizar un backup de la Base de Datos de contenidos del servidor SQL Server del entrono en 2007 (tarea que normalmente nos realizará el departamento de sistemas de nuestro cliente). Para más información sobre este procedimiento, pulsa aquí.

2.- Cargar la copia realizada de la base de datos en el servidor SQL Server del entorno 2010 (tarea que normalmente también realizará el departamento de sistemas de nuestro cliente). Para más información sobre este procedimiento, pulsa aquí.

3.- Una vez restaurada la BD en el nuevo entorno hay que asegurarse que tanto en esta BD de contenidos como en la que nos ha creado la aplicación web que hemos creado en el nuevo entorno 2010, el usuario que ejecutará el script de migración tiene permisos de dbowner. Es importante tener este permiso en las 2 BD para que la migración se efectúe sin errores.
4.- Abrir una consola de Terminal Server al servidor frontal de la granja, y una vez dentro de él, ejecutar una ventana de consola de comandos con permisos de administrador. Una vez dentro de la consola de comandos hay que introducir las siguientes líneas:

cd C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN      (solo en caso de que no tengamos el stsadm en el PATH del sistema)

stsadm -o addcontentdb -url http://URLDeLaAplicaciónWebDestino/ -databasename NombreDeLaBDDeContenido -preserveolduserexperience false

El parámetro -preserveolduserexperience especifica si queremos conservar la antigua experiencia de usuario (sin Ribbon), y por defecto se ejecuta en true. Por tanto, si queremos tener Ribbon en nuestro nuevo entorno, deberíamos especificarlo en -false.

Una vez lancemos el proceso, se observará un indicador porcentual de la migración. Si el proceso es exitoso, al llegar al 100% deberá aparecer un mensaje de "La operación se realizó correctamente"

Hay que tener en cuenta que este paso se puede realizar también con PowerShell mediante el comando: Mount-SPContentDatabase -Name <NombreDeLaBDDeContenido> -DatabaseServer <NombreDelServidorDeSQLServer> -WebApplication <http://URLDeLaAplicaciónWebDestino/> [-Updateuserexperience]

También se puede seguir el procedimiento de migración mientras esta se está ejecutando, desde la administración central, en el apartado “Actualización y Migración” --> “Verificar el estado de la actualización”

Pantalla de visualización del seguimiento de la migración desde la Administración central.

Tras estos pasos, el nuevo entorno debería funcionar correctamente; aunqe se deberían revisar los posibles warnings y errores del fichero de migración (la mayoría vendrán dados por personalizaciones en el entorno original). Sobre todo (vuelvo a insistir) deberemos revisar muy especialmente el tema de las personalizaciones realizadas en el entorno original.

Este ha sido el procedimiento que me ha servido a mí en un entorno muy específico, pero podeis encontrar información mucho más pormenorizada y completa sobre el proceso en general en:

Preparación entorno: http://technet.microsoft.com/es-es/library/cc263026.aspx

Migración BD: http://technet.microsoft.com/es-es/library/cc263299.aspx

¡Saludos y hasta el próximo post!

miércoles, 9 de junio de 2010

MSS 2010: Backups-Restores (II). Copias pormenorizadas

Este post es el segundo y último de una serie de dos dedicada a los backups-restores de SharePoint 2010:

MSS 2010: Backups-Restores (II). Copias pormenorizadas

En el post de hoy continuaremos viendo las novedades que SharePoint 2010 aporta en los Backups-Restores de forma totalmente out-of-the-box. En esta ocasión nos concentraremos en las copias pormenorizadas. Lo cierto es que el nombrecito se las trae (¿Quien realiza las traducciones para Microsoft?) Personalmente encuntro mucho más aclaratorio "copias granulares". En fin, pormenorizadas o granulares, allá vamos:

La primera opción de backup granular que encontraremos en la administración central es la de "realizar una copia de seguridad de la colección de sitios". Como su propia leyenda indica, esta opción nos permite realizar un backup directamente de una única colección de sitios. Recordaremos que con los Backups de conjunto de servidores se podian hacer backups de una aplicación web o de una base de contenidos, pero no de una colección de sitios como tal (una app. web o una BD pueden contener múltiples colecciones de sitios).

Al pulsar en dicha opción accederemos a una pantalla donde debemos seleccionar la aplicación web sobre la que queramos realizar el backup. Para ello se nos abrirá una nueva ventana donde seleccionaremos dicha colección de sitios.

Pantalla de selección de la colección de sitios que queremos copiar
Una vez seleccionada la colección de sitios a copiar, indicaremos el nombre del archivo donde se guardarà la copia en formato \\NombreServidor\NombreCarpetaCompartida\NombreFichero.bak. A destacar que en esta pantalla también aparecen los indicadores de disponibilidad del servicio de backups tal y como comenté en el post anterior.

Selección del nombre de archivo sobre el que realizar el backup de la colección de sitios.
Una vez pulsemos sobre "Iniciar copia de seguridad", el proceso de copia se iniciará y nos mostrará una pantalla de seguimiento de la operación.

Pantalla de seguimiento de la copia de seguridad de la colección de sitios.
Para los amantes de PowerShell (seguro que en 2010 todos nos hacemos amigos de él), la línea de comandos utilizada para realizar backups de colección de sitios es:
Backup-SPSite -Identity <URL de la colección de sitios> -Path <Ruta del fichero> [Force] [-NoSiteLock] [-UseSqlSnapshot] [-Verbose]
 
La segunda opción de backup pormenorizado (granular), es la de exportar un sitio o una lista. Todos recordareis que en SharePoint 2007 se podía realizar la operación "export" de un site mediante la línea de comandos stsadm, la novedad aquí reside en poder realizarlo directamente desde la administración central, y sobre todo, la capacidad de poder realizar un backup de una LISTA en concreto (Algo que hasta ahora no se podía hacer con el SharePoint out-of-the-box).

Para hacer un backup de un sitio o lista, deberemos acceder a esta opción desde la sección "Copia de seguridad y restauración" de la Administración central. Sharepoint nos mostrará una pantalla (con indicadores de disponibilidad) que nos permitirá elegir la colección de sitios, el sitio y la lista que deseamos copiar. Si no especificamos ninguna lista, la copia se realizará sobre el sitio. La ventana de selección de la lista incorpora un cuadro de búsqueda que nos permitirá situarnos directamente sobre la lista si introducimos en él una palabra distintiva por la que el nombre de esta empiece.
 Ventana de selección de la lista a copiar.

 
 Una vez seleccionado el sitio o lista a copiar, nos faltará especificar la ruta y nombre del archivo donde queramos almacenar la copia en formato \\NombreServidor\NombreCarpetaCompartida\NombreFichero.cmp. También podremos especificar si deseamos sobreescribir los archivos existentes o realizar una exportación completa de la seguridad del sitio o lista. Por último nos permitirá seleccionar qué versiones de los documentos queremos guardar, a elegir entre  exportar todas las versiones de los documentos, la última versión principal de cada uno de ellos, la versión actual o la última versión principal y última versión secundaria.
Pantalla de configuración del backup de un sitio o lista.

Una vez pulsemos sobre el botón de "iniciar la exportación" el proceso de copia empezará y nos mostrará una pantalla de seguimiento de la operación muy similar a la ya mostrada para backups de colecciones de sitios.
Para realizar estas acciones mediante PowerShell, se deberá utilizar el siguiente comando:
Export-SPWeb -Identity <URL del sitio> -Path <Ruta del fichero> [-ItemUrl <URL relativa del sitio, lista o librería>] [-IncludeUserSecurity] [-IncludeVersions] [-NoFileCompression] [-Verbose]
La tercera opción que SharePoint 2010 nos permite realizar respecto a backups granulares es la de "Recuperar datos de una base de datos de contenido no adjunto". Este tipo de operación es completamente novedoso dentro de SharePoint, ya que nos permite recuperar estructuras de una base de datos incluida en un servidor SQLServer, que no tiene porque estar anexado a la granja actual de SharePoint. También recupera datos de una Base de Datos que esté en nuestro servidor, pero que no esté asociada a ninguna de nuestras aplicaciones Web. Imaginaos que teneis un entorno de desarrollo local nuevo, donde quereis mantener las soluciones implantadas para diversos clientes. Realizando un backup de las bases de datos de contenido del cliente, e importando las colecciones de sitios mediante este proceso en vuestro entorno local, podriais ir asociando sites collections por cliente en la misma aplicacion web de desarrollo. También se podrían recuperar listas de un entorno de preproducción a uno de desarrollo... las utilidades son múltiples y variadas, y estoy convencido en que os ayudará en muchas ocasiones poder disponer de esta opción.
Mediante la recuperación de una base de datos de contenido no adjunto podremos recuperar tres tipos de estructuras de SharePoint: 
  • Colección de sitio
  • Sitio
  • Lista
El proceso empieza con una pantalla donde podremos especifiar el servidor de base de datos donde se encuentra la Base de datos de contenido (no tiene porque ser el servidor actual de la granja de SharePoint), el nombre de la base de datos en questión y el tipo de autenticación para acceder a él.
Tambíón podremos especificar al operación a realizar, a elegir entre: 
  • Examinar contenido: Nos permite explorar los contenidos de la base de datos de contenido conectada y postergar la decisión de si deseamos copiar una colección de sitios o exportar un sitio o lista.
  • Copia de seguridad de la colección de sitios: Accederemos directamente a la pantalla de copia de colección de sitios.
  • Exportar sitio o lista: Accederemos directamente a la pantalla de exportar un sitio o lista.

Pantalla de configuración del proceso de recuperación de una base de datos de contenido no adjunto

Si hemos elegido la opción de "Examinar contenido", dispondremos de una pantalla adicional donde podremos explorar las estructuras existentes. En esta pantalla podremos explorar tanto colecciones de sitios, como sitios, como listas. Una vez hayamos consultados el contenido de la base de datos, podremos indicar si deseamos realizar la copia de seguridad de la coleccíón de sitios o exportar el sitio o lista.
Pantalla de examinar contenido.

Tanto si hemos seleccionado el tipo de copia desde la pantalla incial como en la de exploración, pulsando el botón de "siguiente" llegaremos a una de las dos pantallas posibles en función de nuestra selección. Tanto las pantallas de los procedimientos de "copia de seguridad de la colección de sitios" como la de "exportar sitio o lista", a partir de este punto son idénticas a los procesos de copia de cada uno de estos componentes ya explicados anteriormente.
Al final obtendremos un fichero con la copia del contenido extraido de la base de datos, y a partir de aquí podremos realizar una operación de "restore" para incluirla en nuestra granja actual.
La cuarta operación disponible para las copias de seguridad granulares es la de "Comprobar el estado de trabajo de copia de seguridad pormenorizada", que nos llevará a una pantalla informativa de los últimos procedimientos de backup granulares realizados (muy similar a la del conjunto de servidores).

 
Pantalla de informes sobre el estado de las copias de seguridad granulares.

Llegados a este punto, ya hemos revisado todas las opciones que nos ofrece la administración central en cuanto a backups granulares. Sin embargo, muchos de vosotros os estareis preguntando cómo se realizan los restores granulares. Pues bien, de forma un tanto incomprensible (da la impresión que les faltó tiempo para implementarlo en la administración central), estas acciones de restore granular sólo pueden realizarse mediante comandos PowerShell. Bien pensado también podría ser una estrategia para obligarnos a familiarizarnos con esta herramienta. No digo que no me guste PowerShell (es realmente brillante), pero incluir opciones de Backup en la Administración Central y no las de Restore es como dejar una película a medias, ¿No creeis?. En fin, sea como sea, los parámetros para las restauraciones granulares son los siguientes:

Para colecciones de sitios:
Restore-SPSite -Identity <URL de la colección de sitios> -Path <Ruta del fichero> [-DatabaseServer <Nombre del servidor de la BD>] [-DatabaseName <Nombre de la BD de contenido>] [-HostHeader <Cabecera Host>] [-Force] [-GradualDelete] [-Verbose]

Para sitios, listas y bibliotecas:
Import-SPWeb -Identity <URL del sitio> -Path <Ruta del Fichero> [-Force] [-NoFileCompression] [-Verbose]

En la restauración via PowerShell para sitios, hay que tener en cuenta que las plantillas origen y destino del sitio, deben ser coincidentes, ya que si estas no fueran iguales, la operación nos daría error.

En la restauración via PowerShell para listas y bibliotecas, hay que tener en cuenta que el comportamiento por defecto de la instrucción es sobreescribir los items repetidos en el destino con los items del origen. Si tuvieramos el caso de que no queremos sobreescribir los ítems ya existentes y únicamente queremos añadir los no coincidentes, deberíamos agregar el parámetro -updateversion ignore.

Y esto es todo en cuanto a las nuevas posibildades de Backups y Restores que SharePoint 2010 nos brinda, como veis no son pocas y además, combinadas con las posibilidades de Scripting de PowerShell, podremos realizar procesos automatizados, programados (schedules) y realmente completos y adecuados a nuestras necesidades. Otro gran paso adelante en SharePoint 2010. Backups-Restores... ¿Quien dijo "miedo"?

:-D

Consultar el post anterior de la serie: MSS 2010: Backups-Restores (I). Conjunto de Servidores

martes, 8 de junio de 2010

MSS 2010: Backups-Restores (I). Conjunto de Servidores

Este post es el primero de una serie de dos dedicada a los backups-restores de SharePoint 2010:

MSS 2010: Backups-Restores (I). Conjunto de Servidores
MSS 2010: Backups-Restores (II). Copias pormenorizadas

¡Saludos lectores del blog! Hoy me he puesto a analizar y testear las nuevas mejoras que SharePoint 2010 nos ofrece en cuanto a Backups-Restores de forma out-of-the-box (no analizaré en esta ocasión productos de tercernos ni copias directas con el SQL Server o scripts varios). Puesto que el tema es bastante extenso, he decidido dividir el post en 2 partes claramente diferenciada.

Para ir abriendo boca, si accedemos a la administración central de SharePoint 2010 observaremos que se han ampliado considerablemente el número de opciones para realizar bakups y restores respecto a la anterior versión: en 2007 habían un total de 4 opciones frente a las 9 actuales.

Opciones de Backups-Restores accesibles desde la administración central de SharePoint 2007
Opciones de Backups-Restores accesibles desde la administración central de SharePoint 2010

En el post de hoy, vamos a centrarnos en el apartado de opciones de "Copia de Seguridad y Restauración del conjunto de servidores", que es prácticamente el mismo que ya conocíamos en 2007 y permite realizar copias de sugridad y restauraciones del conjunto de servidores, aplicaciones web, y bases de datos de contenido. Básicamente hay 4 novedades destacables en estos procedimientos:

La primera novedad es que veremos al inicio de la página una serie de indicadores que nos servirán para comprobar si se pueden realizar copias de seguridad en el momento que las estamos visualizando. Si, por ejemplo, uno de los servicios necesarios para realizar backups no está levantado, SharePoint nos alertará de este echo antes de realizar la copia (lo cual es de agradecer porque nos ahorrará bastante tiempo al no tener que empezar la copia para detectar el error).

Panel de disponibilidad de las copias de seguridad en SharePoint 2010

La segunda novedad, y la más relevante sin duda, es que ahora también podremos realizar copias de los SERVICIOS que incluye SharePoint 2010, tales como InfoPath Form Services, Servicio de metadatos administrados, Performance Point Services, Excel Services, Servicio de Búsqueda, etc. En este sentido ayuda mucho que no exista la capa del SSP del 2007, que todos los servicios residan al mismo nivel, y que muchos de ellos incluyan su propia base de datos.
Parte del listado de elementos del conjunto de servidores que se puede realizar el backup, incluyendo los servicios de SharePoint 2010

La tercera novedad (y esta puede que os haga reir) es que ya no será neceario limpiar el job de backup manualmente en el listado de jobs para realizar una nueva copia una vez hayamos completado el anterior backup. Ahora SharePoint 2010 limpia este job nada más acabar de realizarlo él solito.   ;-)

La cuarta y última novedad destacable en esta sección es que ahora SharePoint nos permite preconfigurar una serie de parámetros antes de inciar cualquier backup, mediante la opción "Establecer la configuración de la copia de seguridad". Estos parámetros configurables son:  

  • El número de subprocesos de copia de seguridad o restauración: A mayor número de subprecesos más rápido se realizará el backup-restore, aunque el registro de seguimiento estará dividido en más partes y será más difícil de revisar.

  • La ubicación para copias de seguridad, donde especificaremos el nombre de servidor y carpeta donde queremos almacendar los backups. Especificar aquí este parámetro nos será especialmente útil, ya que es el que utilizará de forma predeterminada en los backups-restores y no tendremos que volver a teclearlo en caso de que estemos utilizando siempre el mismo directorio.
Pantalla de configuración de los parámetros de backup-restores de SharePoint 2010

Por supuesto (como prácticamente todo en SharePoint 2010), este tipo de backups se pueden realizar ahora también con PowerShell, mediante los siguientes comandos:

Para toda la granja de servidores:
Backup-SPFarm -Directory <Backup folder> -BackupMethod {Full | Differential} [ -Verbose]

Para una aplicación Web:
Backup-SPFarm -Directory <Backup folder> -BackupMethod {Full | Differential} -Item <Web application name> [-Verbose]

Para un Servicio:
Backup-SPFarm -Directory <Backup folder> -BackupMethod {Full | Differential} -Item <Service application name> [-Verbose]

Para una base de datos de contenido:
Backup-SPFarm -Directory <Backup folder> -BackupMethod {Full | Differential} -Item <Content database name> [-Verbose]

Y de esta forma vamos a cerrar el post de hoy. En el próximo veremos todo lo relativo a las copias pormenorizadas (granular backups), que es, de hecho,  donde residen las principales novedades en los backups-restores de SharePoint 2010.

¡Hasta entonces un saludo!

Ir al siguiente post de la serie: MSS 2010: Backups-Restores (II). Copias pormenorizadas

domingo, 6 de junio de 2010

MSS 2010: Listas Relacionales

Continuando con el repaso a las nuevas funcionalidades de SharePoint 2010, hoy quisiera comentaros la capacidad que las nueva versión nos ofrece para relacionar diversas listas entre sí a través de los campos de búsqueda (lookup), que ofrecen muchas más posibilidades que la anterior versión.

En SharePoint 2010 se pueden relacionar dos o más listas diferentes a través de los campos de búsqueda, obteniendo ventajas significativas como:
  • Capacidad de hacer consultas unificadas (Joins) entre listas
  • Proyectar múltiples campos de la lista origen en la lista destino
  • Integridad relacional de los datos entre listas
 Además, las relaciones creadas entre listas puden ser de "1 a 1" o de "1 a n", lo que nos permite adaptarnos mejor a nuestra necesidad relacional.

Esquema de listas relacionadas por los campos de búsqueda (lookup).

Para establecer este tipo de relación entre listas, sencillamente deberemos crear una columna del tipo búsqueda (lookup) en una lista de SharePoint, donde referenciaremos a un campo concreto de otra lista creada previamente.
Zona del formulario de creación de una columna de tipo búsqueda (lookup) relativa a la configuración de la relación entre listas.

Como podeis apreciar claramente en la imagen arriba adjunta, la propiedad que más rápidamente se puede identificar es la de proyectar múltiples campos de la lista origen en la lista destino, ya que una vez seleccionemos la lista origen y el campo origen, SharePoint nos permitirá marcar múltiples campos de la lista origen indicada. Estos campos adicionales también se agregarán como nuevos campos de búsqueda en nuestra lista y los podremos utilizar directamente en las vistas de la lista de destino, aunque tendrán muchas menos opciones de configuración (solo título y descripción) y dependerán del campo de lookup original (si borramos el campo de búsqueda que hemos creado, se borrarán también todos los campos referenciados a partir de este).

Si la relación es de "1 a 1" o de "1 a n", lo estableceremos mediante la casilla de verificación "Aplicar Valores Únicos". Marcar esta casilla implicará una relación de 1 a 1, es decir, que solamente podremos referenciar un elemento de la lista origen una única vez en la lista de destino, ya que si intentamos crear otro elemento en la lista a partir de la misma referencia nos aparecerá un mensaje en rojo debajo del campo referenciado avisándonos de que "Este valor ya existe en la lista", es decir, el campo incluye una validación y no nos dejará guardar el elemento hasta que se cumpla (no repetir una referencia ya establecida por otro ítem). 
Mensaje de error al crear un nuevo elemento que referencia al mismo elemento que otro ítem cuando el campo de búsqueda ha sido marcado con "Aplicar valores únicos".

 Hay que tener en cuenta que si marcamos la casilla de "Aplicar valores únicos", SharePoint no nos permitirá marcar la opción de "Permitir varios valores" (quedará apagada en el formulario).

"Permitir varios valores" es una opción que solo está habilitada cuando la relación de elementos es "de 1 a n" ("Aplicar valores únicos" desmarcado) y nos permite que el mismo campo de búsqueda contenga diversos valores referenciados del campo en la lista original.

Ejemplo de una lista con campos de busqueda que permiten diversos valores

Hay que tener en cuenta que habilitar "Permitir varios valores", se desactivan las opciones de "Aplicar valores únicos" y también las de integridad relacional en el formulario de definición de la columna de búsqueda.
La integridad relacional de los datos se establecerá mediante la casilla de "Exigir comportamiento de relación", que solo podremos marcar si no hemos permitido diversos valores para el campo de búsqueda. Existen dos tipos de integridad relacional, la que permite una "eliminación restringida" y la que permite una "eliminación en cascada".

La eliminación restringida, implicará que no se podrá borrar ningún ítem de la lista origen si este està referenciado al menos una vez en la lista de destino. En caso de intentarlo, SharePoint nos mostrará una ventana de error como la que muestra la siguiente imagen:

Mensaje de error al intentar eliminar un ítem de una lista origen que tiene una integridad relacional de "Eliminación Restringida".

En este caso, para poder eliminar un ítem de la lista origen deberíamos borrar antes todas las referencias existentes en la lista de destino.

El tipo de integridad relacional de "Eliminación en cascada" permite eliminar elementos de la lista origen a pesar de que hayan referencias a estos desde la lista destino, aunque con la consecuencia de que al borrar un ítem de la lista origen, borrará también todos aquellos ítems de la lista destino que hacian referencia a este. Antes de eliminar los ítems de la lista destino relacionados, eso sí, SharePoint 2010 nos mostrará una advertencia como la siguiente.

Advertencia de que al eliminar un elemento de la lista origen también se borrarán todos los que le hacían referencia en la lista destino en un modelo de integridad relacional de "Eliminación en cascada"

En cuanto a la capacidad de hacer consultas unificadas (Join Query) es un tema muy extenso al cual podría dedicar diversos posts, de momento basta decir que una vez tengamos varias listas relacionadas mediante campos de búsqueda (lookup), podremos ejecutar las consultas a las listas con la sentencia "Join", obteniendo como ejecución del query un resultado unificado de todas las listas relacionadas. Estas consultas se pueden desarrollar utilizando cualquiera de las siguientes opciones: 
  • Mediante la API de SharePoint (objeto SPQuery)
  • Mediante consultas LINQ a SharePoint
  • Mediante consultas CAML
  • Mediante consultas creadas con SharePoint Designer 2010
Y hasta aquí la introducción al modelo relacional de listas mediante campos de búsqueda en SharePoint 2010, es posible que volvamos a ver este tema en el foro en un futuro post, haciendo una aplicación práctica de consultas con Join...

¡¡Saludos hasta el próximo Post!!

Cambio en el diseño del blog.

Siguiendo los consejos de diversos amigos y clientes, finalmente he encontrado algo de tiempo para modificar el diseño del blog. Básicamente se basan en cambiar la "horrible" foto de la cabecera donde todo el mundo me decía que me veía demasiado formal (es cierto que no acostumbro a mostrarme tan serio ni suelo llevar corbata), pero también tenía la espina clavada desde el momento que creé el blog de poder crear un espacio que no estuviera limitado a un tamaño fijo de pantalla. Ahora el blog se redimensiona automáticamente según la resolución del monitor o tamaño de la ventana del explorador, y eso permite sacar provecho de los monitores más grandes, que tendrán que hacer menos scroll para leer los artículos de un servidor.

Espero que os gusten los cambios, y que os sintais más cómodos buscando información por aquí. De todas maneras, sigo abierto a críticas constructivas. ¡Procuro evolucionar a mejor con cada experiencia vivida!

Saludos a todos y gracias por vuestro apoyo y críticas en el corto periodo de vida de este blog. ¡¡Un placer seguir compartiendo conocimiento con todos vosotros!!

miércoles, 2 de junio de 2010

MSS 2010: WebPart Explorador de la Organización

Otro de los WebParts que son totalmente nuevos en SharePoint 2010 es el de "Explorador de la Organización" (u organigrama empresarial para los amigos). Este WebPart tiene la peculiaridad de ser uno de los primeros que vienen implementados en Silverlight, consiguiendo una excelente presentación gráfica y un intuitivo control para manejarlo.

Por defecto encontraremos siempre este WebPart en la pestaña "Organización" de nuestra página personal (MySite), aunque lo podremos incrustar exactamente igual que cualquier otro webpart en cualquier página de nuestro portal que creamos conveniente.

El funcionamiento del Webpart es realmente sencillo: Dibuja un árbol de personas en función de la información del campo "Manager" (el campo ha sido traducido por "Administrador" en español) del servicio de perfiles de usuario (nunca directamente de Active Directory). De esta forma, el WebPart pinta a gente por debajo de tí si tu eres su Manager, o a tu mismo nivel (lateral) si compartes Manager con otras personas, o por encima de tí si es tu Manager.

Resultado visual del WebPart "Explorador de la Organización" en Silverlight.

De esta forma, si el campo "Administrador" no está informado, el usuario no aparecerá en el organigrama. El WebPart, inicialmente nos mostrará el organigrama según nuestra posición (usuario logueado en el portal), sin embargo permite irnos moviendo a través del mismo, y a medida que vamos pulsando con el ratón sobre otras personas el organigrama situa a la persona seleccionada en el centro del WebPart, modificando el resultado visual del mismo desde la perspectiva de dicha persona. El resultado es que podemos ir subiendo, bajando o moviendonos lateralmente por el organigrama de una forma realmente intuitiva.
Tras el entusiasmo inicial (¡¡Qué WebPart más chulo!!) empezaremos a darnos cuenta también de sus limitaciones. Uno de los problemas más destacados es el escaso nivel de personalización que tiene este WebPart, si accedemos a su menú de configuración, veremos que la única opción configurable (a parte de las comunes para todo WebPart) es la de "Mostrar solo vista HTML".

Panel de configuración del WebPart Explorador de la Organización

La opción de mostrar solo vista HTML nos permitirá mostrar el organigrama en forma de texto tabulado. Inicialmente le quita la gracia al WebPart, ya que al quitar Silverlight el resultado desluce bastante en comparación, aunque podría sernos útil en determinadas ocasiones cuando no tengamos suficiente espacio en pantalla para representar gráficamente el organigrama.

Visualización del WebPart Explorador de la Organización en formato HTML

Otra limitación muy importante de este WebPart es que no permite conectarse con otros WebParts, descartando así la opción de crear Mash-Ups o páginas interactivas utilizando este componente (¿No va esto en contra de la filosofía Web 2.0?)

Lo primero que seguramente se nos ocurrirá cuando veamos este WebPart tan chulo, es que queremos añadirle un buscador de personas en la misma página y poder situar el usuario central del organigrama en función de la persona buscada. Esto no es posible de forma directa, ya que tal y como hemos comentado, el WebPart está completamente aislado, sin posibilidad de conectarse con otros WebParts de filtro o búsqueda.

Sin embargo, el funcionamiento nativo del WebPart, nos abre algunas puertas a posibles soluciones. La primera de ellas es a través de la propia búsqueda de personas del buscador de SharePoint 2010. Cuando buscamos una persona, la pantalla de resultados nos mostrará un breve resumen del perfil de la misma, y algunas opciones a realizar sobre dicho perfil, como por ejemplo "examinar en organigrama".

Visualización de un resultado de búsqueda de personas en SharePoint 2010

Al pulsar sobre "Examinar en organigrama", SharePoint nos mostrará una pantalla donde veremos a la persona seleccionada en el centro del organigrama, y a partir de aquí podremos irnos moviendo por el mismo a nuestro antojo. Hay que tener en cuenta que esta misma página también tiene un buscador de personas integrado, así que desde la misma, podríamos buscar a una persona diferente, entonces volveríamos a la página anterior de resultados de búsqueda, volveríamos a pulsar en "Examinar en organigrama" y volveríamos a la página de visualización del WebPart con la referencia de la persona central modificada respecto la última busqueda (movimiento del organigrama a través de la página intermedia de resultados de búsqueda).
Visualización del WebPart de Organigrama tras una búsqueda de personas, centrado en la persona buscada.

La página donde nos muestra el resultado, puede confundirse con la misma que tenemos en "Mi sitio", sin embargo no hace falta que tengamos un "Mi sitio" creado para que podamos visualizar a las personas en el orgranigrama (no estamos accediendo a la pestaña "Organización" del mismo, donde también está por defecto situado el WebPart de organigrama), ya que en realidad está utilizando una página genérica de la configuración del servicio de sitios personales (http://baseURL/my/OrganizationView.aspx) a la que le añade el parámetro accountname para especificar cual es el usuario central del organigrama.

URL de la página de visualización del organigrama especificando sobre qué persona se centra.

Entendiendo este funcionamiento, podríamos construirnos una página con 2 webparts interconectados, uno de filtro y otro que nos mostrara la página http://baseURL/my/OrganizationView.aspx, y que pudiéramos pasarle el parámetro accountname para ir modificando el resultado visual del WebPart mediante el parámetro de filtro enviado, aunque posiblemente esta solución pase por un pequeño desarrollo en .NET para pasar correctamente el parámetro de un webpart a otro.

En definitiva, tenemos un nuevo webpart visualmente muy atractivo que seguro encandilará a muchos de nuestros clientes, aunque se hecha de menos algo más de funcionalidad y parámetros de configuración en el mismo. A estas alturas todos sabemos que SharePoint evoluciona por pasos, y pese a que 2010 es una tremenda evolución respecto 2007, todavía se nos ocurren múltiples apectos que desearíamos ver magnificados en una próxima versión. ¡La experiencia de usuario siempre es insaciable!

¡Saludos y hasta el próximo Post!