lunes, 21 de junio de 2010

[Tips SharePoint 2010]Obtener la Base de datos de contenido con PowerShell

Para obtener la base de datos de contenidos de una Colección de sitios mediante PowerShell:

$site = Get-SPSite http://{Url de la Colección}
$site.ContentDatabase

image

Para obtener una referencia a la aplicación web que contiene la Colección de Sitios:

$site = Get-SPSite http://{Url de la Colección}
$webapp = $site.WebApplication

También podemos utilizar:

Get-SPWebApplication http://{Url de la Colección}

Para obtener todas las bases de datos de contenido de una aplicación web:

$webapp = Get-SPWebApplication http://{Url de la Colección}

$webapp.ContentDatabases

image

Error No se pueden cargar las acciones de flujo de trabajo del servidor

Al intentar crear desde SharePoint Designer 2010 un flujo de trabajo personalizado saltaba el error “No se pueden cargar las acciones de flujo de trabajo del servidor” (“Unable to load workflow actions from the server”).

image

Lo primero que hice fue verificar que no se habían modificado el fichero de acciones de WF “WSS.ACTIONS” como indica el artículo “Error al cargar el archivo de configuración del flujo de trabajo”.

Pero el problema persistía, después de mirar un rato los logs de SharePoint me fijé que aparecía un error del tipo:

Microsoft.SharePoint.SPException: Error al encontrar el archivo XML en la ubicación '14\Template\Features\ReportServer\feature.xml' …..

at Microsoft.SharePoint.SoapServer.WebPartPagesWebService.GetWorkflowActionsFromFeatureElements

 

Al buscar la feature “ReportServer” en el directorio físico del servidor no existía, lo que significaba que la base de datos de configuración tenía registrada la feature pero no se había copiado físicamente, por lo que al realizar la carga daba un error.

Mi solución fue la de quitar la feature mediante PowerShell y realizar un iisreset:

 

$farm = Get-SPFarm

$fuckfeature = $farm.FeatureDefinitions | where {$_.DisplayName -eq "ReportServer"}

$fuckfeature.Delete()

jueves, 17 de junio de 2010

Remote BLOB Storage para SharePoint 2010

Los BLOBS (Binary Large Object) consisten en conjuntos de datos no estructurados como ficheros de texto, imágenes o vídeos. En SharePoint los BLOB’s se almacenan en las bases de datos de contenido, pudiendo afectar al espacio consumido y velocidad. SqlServer 2008 R2 incorpora el proveedor FILESTREAM que permite almacenar los BLOBs como ficheros en el sistema de ficheros NTFS en lugar de la base de datos.

SharePoint 2010 (Foundation y Server) se pueden aprovechar de los remote blobs activando el FILESTRIME provider para las bbdd de contenidos, de esta forma podremos almacenar grandes cantidades de datos como imágenes o vídeos sin afectar al volumen de la base de datos ni al rendimiento.

A continuación veremos los pasos para activar el RBS (Remote BLOB Storage) para SharePoint 2010 basado en el Virtual Lab: Configuring Remote Blob Storage FILESTREAM Provider for SharePoint Server 2010

 

Activar Remote BLOB para SharePoint 2010

Lo primero es necesario disponer de al menos SqlServer 2008, SqlServer 2008 R2 o SqlServer 2008 Express R2. Para activarlo accederemos al “SQL Server Configuration Manager” seleccionaremos la instancia de SQL y desde las propiedades accederemos a la pestaña “FILESTREAM” y activaremos: “Enable FILESTREAM for Transact-SQL access”, “Enable FILESTREAM for file I/O streaming access” y “Allow remote clients to have streaming access to FILESTREAM data” y a continuación aplicaremos.

image

Ejecutaremos desde el “SQL Server Management Studio” el comando:

EXEC sp_configure filestream_access_level, 2

RECONFIGURE

A continuación tendremos que indicar a Sql Server que utilice el FILESTREAM provider para almacenar los BLOB’s de la base de datos de contenido de nuestra Colección de Sitios. Para éllo primero tendremos que identificar el nombre de la bbdd de la Colección, en este caso lo veremos mediante PowerShell; desde la consola de PowerShell de SharePoint 2010 ejecutamos el comando:

$cdb = Get-SPContentDatabase –WebApplication http://intranet.contoso.com

$cdb

image

Desde el “SQL Server Management Studio” creamos una master key ejecutando:

use [WSS_Content_GUID]

if not exists (select * from sys.symmetric_keys where name = N'##MS_DatabaseMasterKey##')create master key encryption by password = N'Contraseña'

Donde “WSS_Content_GUID” representa el nombre de la base de datos de contenido.

Definimos un grupo de ficheros con el nombre “RBSFilestreamProvider” y lo asociamos al proveedor filestream:

use [WSS_Content_GUID]

if not exists (select groupname from sysfilegroups where groupname=N'RBSFilestreamProvider')alter database [WSS_Content_GUID]

add filegroup RBSFilestreamProvider contains filestream

Especificamos el fichero filestream “RBSFilestreamFile” y el directorio donde se almacenarán los BLOB’s

use [WSS_Content_GUID]

alter database [WSS_Content_GUID] add file (name = RBSFilestreamFile, filename = 'c:\Blobstore') to filegroup RBSFilestreamProvider

En este momento dispondremos de una nueva carpeta con permisos especiales para que el servicio de SqlServer pueda manejar los BLOB’s como ficheros:

image

Si accedemos ahora a las propiedades de la base de datos veremos el nombre de nuestro grupo de ficheros Filestream:

image

Ahora instalaremos el addin con las API de RBS en todos los servidores frontales y de aplicación de SharePoint que encontraremos en RBS_x64.msi. Para instalarlo lo haremos desde línea de comandos para que tenga en cuenta nuestros filegroups:

msiexec /qn /lvx* rbs_install_log.txt /i C:\RBSInstall\RBS.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="WSS_Content_GUID" DBINSTANCE="DEMO2010A" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1

Para indicar a SharePoint que debe utilizar el proveedor RBS FileStream, desde PowerShell obtendremos las propiedades de remote BLOB’s en la bbdd de contenidos:

$cdb = Get-SPContentDatabase –WebApplication http://intranet.contoso.com

$rbss = $cdb.RemoteBlobStorageSettings

Mediante la variable $rbss instalaremos el proveedor y lo activaremos para ser utilizado:

$rbss.Installed()

$rbss.Enable()

Al ejecutar la última instrucción, encontraremos un mensaje del tipo:

image

Por último indicaremos que el activo :

$rbss.SetActiveProviderName($rbss.GetProviderNames()[0]

Desde este momento cuando subamos un fichero a SharePoint éste se almacenará en el sistema de ficheros, en nuestro caso en la carpeta “c:\Blobstore”.

image

Si tuviéramos ficheros almacenados antes de activar el RBS éstos seguirán almacenados en la base de datos de contenidos, para pasarlos al sistema de ficheros utilizaremos el comando:

$rbss.Migrate()

Si quisiéramos almacenar el sistema de ficheros solo aquellos ficheros mayores de 1MB de tamaño:

$cdb.RemoteBlobStorageSettings.MinimumBlobStorageSize=1048576

 

Por último, si queremos desactivar el uso de RBS ejecutaremos:

$rbss.SetActiveProviderName("")

Esto solo lo desactivará para nuevos BLOB’s, si ahora queremos volver a sacar los ficheros del sistema de ficheros y volverlos a introducir en la base de datos de contenido tendremos que volver a migrarlos pero hacia la bbdd de contenidos, este caso no lo he podido probar :(

miércoles, 16 de junio de 2010

Libro "SharePoint 2010 de principio a fin"

Ya lo han comentado Gustavo y Juan Carlos González, la “criatura” ha salido a la luz de la mano de Krasis. He tenido el placer de escribir junto con estos dos cracks uno de los primeros libros en Español sobre SharePoint 2010.

El libro está orientado a personas que trabajen con SharePoint tanto para desarrolladores como administradores. Cada uno de los capítulos además de explicar los conceptos y funcionalidades, describe paso a paso los procedimientos desde la interfaz gráfica, el modelo de objetos y powershell.

Creo que es un libro ideal tanto para los que empiezan con SharePoint 2010 como los que ya han trabajado alguna vez con SharePoint en versiones pasadas.

Espero que os guste, y por supuesto comprarlo!!, el libro también estará disponible en breve para su compra en Amazon y Barnes & Noble, y el resumen de los contenidos es el siguiente:

  • Instalación, configuración y administración

  • Introducción a la programación de SharePoint, incluyendo el uso de Visual Studio 2010.

  • Configuración, programación y uso de los distintos elementos de la arquitectura de SharePoint: Aplicaciones Web, Colecciones de Sitios, Sitios, Bibliotecas y Listas, Tipos de Contenido y Columnas de Sitio.

  • El Modelo de Objetos en Cliente y su utilización.

  • Manejadores de Eventos, Trabajos de Temporizador, Flujos de Trabajo.

  • SharePoint Designer 2010.

  • Personalización de la Interfaz de Usuario y Creación de WebParts

  • Características y soluciones.

  • Gestión de contenidos para la web y gestión de contenidos empresariales.

  • Integración de datos de negocio y capacidades de inteligencia de negocio.

  • Formularios electrónicos con InfoPath e InfoPath Forms Services.

  • Otros servidores en SharePoint 2010 y capacidades de búsqueda.

 

libroSharepoint2010_Grande

lunes, 14 de junio de 2010

SharePoint 2010: Error el servicio de búsqueda se encuentra sin conexión

Al realizar una reinstalación de SharePoint 2010 sobre un servidor que tenía configurado previamente el servicio de búsqueda, nos encontramos que al entrar a configurar los orígenes de contenido de la aplicación de servicio del buscador nos mostraba el mensaje de error “El servicio de búsqueda se encuentra sin conexión. Vaya a la página Servicios del servidor de la Administración central de SharePoint para comprobar si el servicio está habilitado. Esto también puede deberse a que hay un movimiento del indizador en curso”.

image

Al intentar eliminar la aplicación de servicio de búsqueda para poder crearla de nuevo se quedaba procesando hasta dar un error de timeout.

La solución fue eliminar la aplicación de servicio de búsqueda mediante PowerSell para crearla después desde el asistente:

$searchapp = get-spenterprisesearchserviceapplication

$searchapp.Delete()

image

Podéis encontrar un post muy interesante sobre como configurar el servicio de búsqueda: SharePoint 2010 Configuring Search Service Application using PowerShell.

jueves, 10 de junio de 2010

Ejemplo portal público sobre SharePoint 2007

Recientemente en Renacimiento hemos terminado el portal www.icea.es basado en SharePoint 2007 y accesible. Todavía nos quedan algunos retoques (así que no seáis muy duros), entre las características de este portal podemos destacar:

  • Portal Accesible: Cumple con un alto porcentaje de las pautas de accesibilidad, recordar que SharePoint 2007 NO es accesible. Si desactiváis los estilos y el javascript podréis navegar por el contenido de forma sencilla y natural. Se ha realizado mucho esfuerzo para personalizar la parte pública del portal, como Masterpages, layouts, webparts y controles. Además se ha integrado un editor de contenido para facilitar la introducción de contenido que cumpla con las pautas de AA.
  • Almacén de datos: Consiste en una presentación jerarquizada y catalogada de una biblioteca con más de 3000 documentos.
  • Candado: Una cosa curiosa de ICEA es que puedes ver que tienen contenido privado sobre una determinada información pero no puedes ver el detalle a no ser que estés logado y tengas permiso para verlo.
  • Seguridad integrada: Toda la gestión de seguridad de contenidos se realiza desde SharePoint.
  • Buscadores por todos lados: se ha explotado mucho el motor de búsqueda se SharePoint para mostrar la información y ayudar a encontrarla.
  • Agenda de eventos: Agenda visual basada en distintos tipos de eventos publicados en el portal.

 

Si tuviera que destacar cuales han sido las claves del éxito del proyecto sin duda diría que ha sido la “estrecha relación con el cliente” el equipo ha formado parte de ICEA permitiendo una gran flexibilidad a la hora de hacer y definir, de hecho estamos sentados físicamente al lado de las personas que llevan el proyecto en ICEA.

image  imageimage imageimage

  image

miércoles, 9 de junio de 2010

Error Excel Services 2010: No se puede abrir el libro

Al abrir cualquier excel desde Excel Services se producía un error con el mensaje “No se puede abrir el libro” (“"The workbook cannot be opened"). Después de revisar que el fichero excel no tuviera nada raro, que el servicio estaba activo y bien configurado empecé a comprobar que en los logs me saltaban trazas del tipo: image

Cannot open database "WSS_Content" requested by the login. The login failed

"There is a compatibility range mismatch between the Web server and database"

Además comprobé que en log de sucesos de windows marcaba los siguientes tipos de error:

Error 3760

No se encontró la base de datos SQL 'WSS_Content' en la instancia de SQL Server '.\SQLEXPRESS'. A continuación se incluye información adicional de SQL Server sobre el error.

Cannot open database "WSS_Content" requested by the login. The login failed.

Error 5586

Excepción de SQL desconocida 262. A continuación se incluye información adicional de SQL Server sobre el error.

CREATE TABLE permission denied in database 'WSS_Content'.

Error 5617

Hay una discrepancia de intervalo de compatibilidad entre el servidor web y la base de datos "WSS_Content". Debido a esta incompatibilidad, las conexiones a los datos se han bloqueado. Esto puede suceder cuando una base de datos de contenido no se actualizó para estar dentro del intervalo de compatibilidad del servidor web o si la base de datos se actualizó a un nivel superior al del servidor web. El servidor web y la base de datos se deben actualizar a la misma versión y nivel de compilación para volver a estar dentro del intervalo de compatibilidad.

 

Al final la solución la encontré en el post "The workbook cannot be opened" Error with SharePoint Server 2010 (and TFS 2010)”, el problema ocurre cuando se crea el servicio de aplicaciones de Excel Services desde el asistente de instalación de la Administración Central, ya que el usuario que se utiliza como cuenta administrada para el servicio no dispone de los permisos suficientes en la base de datos de contenido que aloja el fichero Excel Services.

En mi caso desde la consola de Sql Management añadí al usuario los permisos: db_owner y public en la bbdd de contenidos.

image