SharePoint Latin Rotating Header Image

Automatización y Scripting

Sin capacidad de almacenamiento suficiente durante proceso de Exportacion/Importacion en SharePoint

En esta semana nos encontramos con un escenario muy particular relacionado con comandos Import/Export SPWeb en SharePoint 2010. Al correr Export-SPWeb o Import-SPWeb el proceso en algún punto marcaba error y la razón fue porque la unidad C: llegaba a su capacidad máxima de almacenamiento.

Es increíble, ya que es bien sabido que debemos contar con volúmenes de disco duro adicionales para guardar los LOGS de SharePoint y en el caso de la base de datos los LOGS y MDFs de SQL. Además, la unidad C: solo es para guardar los archivos del sistema y debemos tener libre el doble equivalente de memoria RAM en capacidad de almacenamiento en disco duro. En otras palabras, si tengo 8GB de RAM, siempre debería tener por lo menos 16GB de espacio almacenamiento libre en C:

Entonces si tengo el almacenamiento de mi servidor de aplicaciones debidamente configurado con diversos volúmenes e incluso con cierto nivel de RAID, ¿porque se llena el disco duro al ejecutar comandos Import-SPWeb y Export-SPWeb?

Resulta que estos comandos son la alternativa disponible para mover sitios web de SharePoint entre colecciones de sitio, son capaces de mover permisos, contenido, versiones, workflows, etc. En estos tiempos donde muchas empresas carecen de gobernabilidad y planeación de un servicio SharePoint es común ver sitios web de SharePoint realmente grandes con una jerarquía de sitios muy profunda y desde la perspectiva de almacenamiento realmente enormes y esto tiene una implicación importante a considerar cuando trabajamos con Import-SPweb y Export-SPWeb.  En realidad y de forma interna estos comandos hacen uso de una funcionalidad pre-construida en SharePoint llamada Content Deployment.

Content Deployment ofrece una alternativa para mover contenido de un lugar a otro y cuenta con todo un proceso para realizarlo. Este proceso es invocado tanto por los comandos Import-SPWeb, Export-SPWeb, Content Deployment del Central Administracion, los respaldos granulares y el modelo de objetos de SharePoint entre otros. En primer instancia este proceso requiere de varios atributos como tipo de exportación (full o incremental), sitios o contenido que será incluido, rutas y paths de archivos donde se exporta el contenido y los logs de los procesos, entre otras opciones de configuración. El caso es que en algún punto, este proceso construye un archivo XML que describe todas las instrucciones detalladas de exportación o importación que proceso deberá seguir y por consiguiente si el sitio a exportar es muy grande, este archivo y algunos otros temporales que genera lo será también. Y bueno, ¿En dónde crees que estos archivos tras bambalinas se almacenan de forma temporal? Pues en el TEMP del usuario firmado y ¿En dónde se almacena el TEMP del usuario firmado? Pues en el disco duro C: y he ahí la razón.

Una alternativa de solución a esto es modificar la variable de entorno TEMP para que su ruta de almacenamiento apunte a una unidad que si tenga la capacidad de almacenamiento necesaria para soportar nuestros procesos de importación y exportación.

clip_image001

También si estás trabajando con PowerShell puedes usar $env:temp para obtener la ruta del TEMP y modificarla usando set-item -path env:temp -value "F:\TEMP".

Cosas de la vida! Saludos

UPDATE: Existe el switch NoFileCompression que podemos utilizar para evitar que de forma temporal se generen los archivos adicionales que se comentaron durante el post. Por default, NoFileCompression es False y esto genera en la carpeta TEMP los archivos temporales previos a los que genera el proceso. Este switch lo deberas especificar tanto en Export-SPWeb como Import-SPWeb.

Paquete de 101 códigos de ejemplo en desarrollo SharePoint 2010

En el blog oficial del equipo de desarrollo SharePoint de Microsoft se ha publicado una entrada referente a un paquete de ejemplos de código sobre SharePoint 2010 lo cual me parece fabuloso. Estuve revisando la lista de ejemplos y se deja ver que este es un excelente recurso para programadores SharePoint y/o principiantes.

Puedes descárgalo aquí y estoy seguro será de utilidad

HG

PowerShell Command Builder para SharePoint 2010 y Office 365

Encontré por ahí una aplicación para generar comandos de PowerShell llamada PowerShell Command Builder la cual encuentro muy útil. La dirección para acceder es http://www.microsoft.com/resources/TechNet/en-us/Office/media/WindowsPowerShell/WindowsPowerShellCommandBuilder.html y requieres contar con el plugin Silverlight en tu navegador.

image

Aqui mas informacion: http://www.microsoft.com/download/en/details.aspx?id=27588

Instalando Granja de Servidores SharePoint 2010 Small Farm (3-Tier)

Para un programador SharePoint es importante conocer la arquitectura de la plataforma y en ese sentido realizar un proceso de instalación de una granja SharePoint es un deber. En esta ocasión quiero compartir como lograr en una topología llamada Small Farm (Three Tier).


clip_image001


Básicamente tenemos un software (Network Load Balancing) para balancear y distribuir la carga entre dos servidores Web Front End (litwarewfe1 y litwarewfe2) y tendremos un solo servidor de aplicaciones (litwareapp) con la mayoría de las aplicaciones de servicio y la herramienta central de administración configurada, todo el contenido y la configuración será almacenada sobre un solo servidor de base de datos SQL Server (litwaredb).


Network Load Balancing en Windows Server 2008 R2 para WFE de SharePoint 2010



Configurando Granja de Servidores SharePoint 2010



Configurando Granja de Servidores SharePoint 2010 con PowerShell


Descargando las PPTs de SharePoint Conference 2011

Para los que fueron o han adquirido el acceso a MySPC del sitio http://www.mssharepointconference.com encontré en internet un script de PowerShell para descargar las presentaciones de SharePoint Conference 2011 de forma automática, solo que al ejecutarlo, PowerShell marcaba el siguiente error:

File C:\spc2011\GetAllPPTs.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see “get-help about_signing” for more details

Para solucionarlo:

1. Ejecutamos el script Set-ExecutionPolicy RemoteSigned

2. Posteriormente, en las propiedades del archivo GetAllPPTs.ps1 damos clic en el botón Unblock.

clip_image001

3. Ejecutamos de nuevo y listo.

Aun no se si este script nos sirve para descargar los videos.

Saludos

Como restablecer el sitio web de IIS “SharePoint Web Services” cuando éste es eliminado por error en SharePoint 2010

Algo que me gusta de trabajar como ingeniero de soporte freelance es el orgullo que te da ganar esas pequeñas batallas contra la ignorancia.


Problema


El problema fue que se extendió una aplicación web de SharePoint usando el sitio web de IIS “SharePoint Web Services”. Antes que cualquier otra cosa, este sitio web de IIS hospeda algunos servicios WCF de sistema los cuales se configuran en todos los WFE de la granja y son utilizados por algunas aplicaciones de servicio, el asistente de configuración de SharePoint es el encargado de aprovisionar este sitio web en tiempo de instalación y configuración de la granja. 


image


Lo que sucedió es que al extenderse esta aplicación web en este caso “MySite” se detuvieron aplicaciones de servicio y quedo totalmente inoperable. El resultado fue desastroso para la granja ya que se detuvieron las aplicaciones de servicio Manage Metadata, User Profile y en este caso el portal de MySite de todo el corporativo. El mensaje de error al intentar acceder al portal fue Could not load user profile, adicional el visor de eventos empezó a regitrar An exception occurred when trying to issue security token: The server did not provide a meaningful reply; this might be caused by a contract mismatch, a premature session shutdown or an internal server error.


Como primera reacción de cualquier ser humano es la de des extender el portal.


image


Inyectando con esto un problema mayor ya que al remover vía herramienta de administración SharePoint el sitio web de IIS causa que las carpetas asociadas en el sitio web sean eliminadas de la ruta a la que apunta, en este caso C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\WebServices\Root.


La solución


La solución a este escenario fue ejecutar el script mencionado en el post How to get back the SharePoint WebServices application in IIS if deleted, SharePoint 2010   para regenerar el sitio web de IIS “SharePoint Web Services”,  este proceso en efecto si aprovisiono de nuevo el sitio web de IIS, sin embargo, al dar clic sobre el marcaba un error indicando que no existía la ruta de los archivos lo cual es totalmente correcto ya que al des extender se elimino todos los archivos de la ruta a donde apuntaba.


image


Lo que se decidió fue buscar la carpeta Root de otra granja y copiarla sobre la carpeta en cuestión. Posteriormente se ejecuto de nuevo el siguiente codigo encontrado aqui: How to get back the SharePoint WebServices application in IIS if deleted, SharePoint 2010. Basicamente lo que el procedimiento hace es cargar una instancia de la place SPIisWebServiceInstanceSettings e invoca un par de metodos para realizar el aprovisionamiento del sitio web de IIS sobre el servidor. Una vez que es aprovisionado se procede a realizar un ciclo donde por cada aplicacion de servicio es aprovionado el nuevo sitio web de IIS restableciendo con esto la vinculacion y la dependencia al mismo.


$webservice = [System.Type]::GetType(“Microsoft.SharePoint.Administration.SPIisWebServiceSettings, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”)


$Instance = $webservice::Default


$Method = $webservice.GetMethod(“ProvisionLocal”, “Instance, NonPublic”, $null, @(), $null)


$Method.Invoke($Instance, $null)


$Method = $webservice.GetMethod(“Provision”, “Instance, Public”, $null, @(), $null)


$Method.Invoke($Instance, $null)


Get-SPServiceApplication | ForEach-Object {$_.Provision()}


En resumen


Cuando inicias con una nueva plataforma  y estas en proceso de aprendizaje es comun o normal que sucedan detalles, errores, situaciones de configuracion por error, la recomendacion es revisar cualquier procedimiento en una granja de pruebas para validar el proceso y los resultados previamente.  Aqui dos enlaces donde platico algunas consideraciones al respecto: Que se necesita para ser consultor y/o desarrollador SharePoint y Consideraciones para poner en marcha soluciones personalizadas SharePoint en ambientes de producción de nuestros clientes.


Saludos

¿Cuál es la primer lección de un administrador SharePoint 2010?

Por ahí un compañero me comentó que tenía el siguiente error cada que intentaba agregar una solución SharePoint 2010 en su granja de desarrollo.

El error era:

Insufficient SQL database permissions for user ‘Name: DOMAIN\spadmin SID: S-1-5-21-1455513522-927615373-1062434389-54912302 ImpersonationLevel: None’ in database ‘DEV_SharePoint_Config’ on SQL Server instance ‘SPMACHINE’. Additional error information from SQL Server is included below.

The EXECUTE permission was denied on the object ‘proc_putObject’, database ‘DEV_SharePoint_Config’, schema ‘dbo’.

Y bueno, al averiguar cómo estaba haciendo el deploy me dí cuenta que estaba trabajando con stsadm.exe –o addsolution sobre SharePoint 2010, este comando se sigue soportando y sin duda alguna es de mucha utilidad para aquellos administradores que gestionaban granjas de SharePoint 2007.

Se supone que en SharePoint 2010 la manera más adecuada de realizar este tipo de operaciones es usando Power Shell ya que el Snap In de SharePoint se encarga de otorgar los permisos necesarios a la cuenta en cuestión para ejecutar comandos sobre los objetos de base de datos requeridos, como por ejemplo el rol “SharePoint_Shell_Access” sobre la base de datos de configuración de la granja como se especifica aqui http://technet.microsoft.com/en-us/library/ee806878.aspx.

Ante este escenario tenemos varias opciones.

Opción 1: Hacer el deploy usando SharePoint 2010 Management Shell

Aquí se indica como hacer deploy usando Power Shell. http://technet.microsoft.com/en-us/library/cc262995.aspx#Importing el cual al cargar el Snap In de SharePoint sobre la consola de Power Shell de forma automática establece los permisos requeridos para ejecutar operaciones de configuración.

Opción 2: Asignar el rol requerido en SQL Server

1. Acceder a SQL Server Management Studio

2. Expandir el árbol para buscar la carpeta de Security y después Logins

3. Acceder a las Properties de la cuenta con la cual estamos haciendo el deploy

4. Elegir User Mappings

5. Elegir la base de datos de configuración de la granja SharePonit_Config

6. Elegir de los roles que se tienen en la base de datos el de SharePoint Shell Access y dar clic en Ok.

image

7. Ejecutar el deploy usando la consola de Windows y ejecutando el comando stsadm.exe –o addsolution –filename “path del wsp”

Opción 3: ejecutar el comando stsadm.exe usando la consola SharePoint 2010 Management Shell

La primer lección que un administrador SharePoint 2010 debe aprender es siempre utilizar SharePoint 2010 Management Shell como su principal herramienta de adminsitración SharePoint. :)

image

HG
SharePoint Developer! :)

Facilitando el descubrimiento con SEO Toolkit

Para todos aquellos que construimos soluciones para Internet es necesario contemplar como agregar metadatos a nuestras páginas para que buscadores o servicios de búsqueda permitan encontrarlas, indexarlas y potencialmente arrojarlas como resultados.

Sin embargo, no solamente llenar de metadatos los encabezados de nuestras páginas es suficiente para permitir a servicios de búsqueda encontrar y rastrear el contenido. Es necesario asegurar que nuestro sitio web cuenta con enlaces propiamente vinculados a otros sitios, contenido ligero y accesible, código HTML bien formado que cumple con los estándares, entre otros elementos y referencias importantes de revisar.

SEO Toolkit es una herramienta que nos permite optimizar nuestros sitios web para un mejor decrubrimiento por parte de servicios y motores de busqueda. SEO Toolkit analiza nuestros sitios y recomienda posibles mejoras que podemos realizar y así facilitar a los servicios de búsqueda el encontrar nuestro contenido. Podríamos pensar que SEO Toolkit es un agente analizador que identifica como optimizar nuestros sitios para facilitar su descubrimiento en internet.

Esta es una herramienta de Microsoft por lo tanto se instala sobre IIS 7.0 y hace uso de SQL Server 2008 para recopilar y almacenar el resultado de los análisis. Así mismo este componente se integra a IIS 7 y permite acceder a reportes, reglas, validaciones y sugerencias para mejorar nuestro portal.

SNAGHTML371585e

Cuando creamos un nuevo análisis podemos configurar el sitio que queremos analizar, el número de enlaces que deseamos revisar, la autentificación que se deberá soportar y todo lo necesario para que la herramienta desempeñe una revisión de forma adecuada.

Los resultados obtenidos son muy valiosos ya que nos carga validaciones e incumplimientos que se realizaron. Por cada incumplimiento nos da un alto nivel de detalle entre ello la posible solución. Por fin ya no tendremos que recurrir a otras herramientas de análisis de sitios web.

SNAGHTML3717495

Ya hacia falta una herramienta tan valiosa como esta, que bien que Microsoft identificó el hueco y nos proporciono una alternativa aceptable. Estoy seguro que SEO Toolkit aportará mucho valor para tus proyectos web.

Dejo el enlace del sitio para que proceda a evaluar e instalar.

image

HG

Error de Certificado en SharePoint 2010

Encontre esto en el visor de eventos de mi ambiente local de desarrollo SharePoint 2010.

El detalle:

An operation failed because the following certificate has validation errors:\n\nSubject Name: CN=SharePoint Security Token Service, OU=SharePoint, O=Microsoft, C=US\nIssuer Name: CN=SharePoint Root Authority, OU=SharePoint, O=Microsoft, C=US\nThumbprint: EB9D32A29B824E2A73904EE4DB14BA928BA32D46\n\nErrors:\n\n The root of the certificate chain is not a trusted root authority..

La solucion:

Dentro de Power Shell de SharePoint ejecutar:

$rootCert = (Get-SPCertificateAuthority).RootCertificate
New-SPTrustedRootAuthority -Name "localNew" -Certificate $rootCert

Deteniendo y Encendiendo Aplicaciones de Servicio de SharePoint 2010

Como parte de una instalación desde cero de SharePoint 2010 nos vemos en la necesidad de detener y encender aplicaciones de servicio constantemente.


Para facilitar el proceso, aqui algunos comandos de Power Shell utiles:


  1. Cargamos el SharePoint 2010 Management Shell en modo administrador
  2. Ejecutamos el comando Get-SPServiceInstance el cual nos retorna una tabla con la lista de aplicaciones de servicio de SharePoint de donde obtendremos el GUID de la aplicación de servicio que requerimos detener. Nota: Podemos guardar en un archivo de texto la salida de la consola usando Get-SPServiceInstance > c:\appsvc.txt para que en posteriores lo tomemos de aquí
  3. Después ejecutamos el comando Stop-SPServiceInstance el cual nos solicita el GUID de la aplicación de servicio que requerimos detener, leemos lo que la consola muestra y proporcionamos la instrucción solicitada.
  4. Para encender la aplicación de servicio simplemente utilizamos el comando Start-SPServiceInstance y proveemos el GUID así como las instrucciones adicionales

Listo!