Configurar Remote Blob Storage (RBS) en SharePoint 2010

Con este post quiero explicar como se ha de configurar Remote Blob Storage o RBS en SharePoint 2010. Parto que todos sabemos que es RBS y los tipos de contenido Blob, únicamente aclarar que este sistema de almacenar ficheros en File System es algo propio de SQL Server 2008 llamado FILESTREAM y SharePoint 2010 lo único que hace es a través de la siguiente configuración, permitir que dichos ficheros (han de ser de gran tamaño) se almacenen en el sistemas de archivos en vez de en base de datos con lo cual, se tenga una mayor velocidad de acceso…

Requisitos: La versión mínima de SQL Server seria: Microsoft SQL Server 2008 R2, Microsoft SQL Server 2008 con Service Pack 1 (SP1) y Cumulative Update 2.

Aclarado esto, vamos a ver los pasos a seguir a la hora de activar RBS en una base de datos de contenido de SharePoint 2010 y antes de nada debemos asegurarnos que la cuenta que vamos a utilizar es miembro del grupo de Administradores de SharePoint y miembro de SQL Server con los roles de dbcreator y securityadmin.

1) Partimos que tenemos claro en que base de datos de contenido de SharePoint vamos a habilitar RBS, así que lo primero es habilitar FILESTREAM en nuestro servicio de SQL Server, para ello:

Abrimos “SQL Server Configuration Manager”, seleccionamos “SQL Services” y en la ventana de la derecha, accedemos a las propiedades de “SQL Server”. Esto nos abrirá una nueva ventana sobre la que pincharemos en la pestaña “FILESTREAM” y activaremos las siguientes opciones:

  • “Enable FILESTREAM for Transact-SQL access” 
  • “Enable FILESTREAM for file I/O streaming access” 
  • “Allow remote clients to have streaming access to FILESTREAM data”

2) Tras habilitar en el servicio SQL Server el FILESTREAM, debemos activarlo en SharePoint, para ello abrimos “SQL Server Management Studio”, y ejecutamos el siguiente script sql:

Use [master]
Exec sp_configure filestream_access_level, 2
Reconfigure

Una vez ejecutado, abrimos el “SharePoint 2010 Management Shell” para identificar el nombre de la base de datos de nuestra Web Application (también puede hacerse de un Site Collection) y escribimos:

$db = Get-SPContentDatabase –WebApplication http://miintranet
$db

Tras obtener el nombre (Name) de la base de datos, volvemos a  abrir el “SQL Server Management Studio” y ejecutamos las siguientes sentencias sql:

  • Creación de una clave maestra para nuestra base de datos:
Use [DemoContentDB]
If not exists (select * from sys.symmetric_keys where name =
N'##MS_DatabaseMasterKey##')create master key encryption by
password = N'Admin Key Password !2#4'
  • Creación del filegroup:
If not exists (select groupname from sysfilegroups where groupname=
N'RBSFilestreamProvider')alter database [DemoContentDB] 
add filegroup RBSFilestreamProvider contains filestream
  • Una vez tenemos el filegroup, debemos añadir el archivo de filestream (en este ejemplo lo creamos en la ruta C:\RBSDataStore):
Alter database [DemoContentDB] add file (name = 
RBSFilestreamFile, filename = 'C:\RBSDataStore') to filegroup RBSFilestreamProvider

Para comprobar que todo se ha creado correctamente, abrimos el explorador de archivos y comprobamos que la carpeta ha sido creada:

3) El siguiente paso es instalar el proveedor RBS en los servidores de SQL Server y SharePoint 2010, para ello debemos descargar el paquete “RBS.msi” de Microsoft: http://go.microsoft.com/fwlink/?LinkID=177388 y realizar la instalación desde consola, para ello:

  • Accedemos al servidor SQL Server de la granja
  • Copiamos el paquete descargado “RBS.msi” a: “C:\SPSetupInfo\
  • Abrimos la “Consola de Windows” y ejecutamos el siguiente comando en “C:\SPSetupInfo\“:
msiexec /qn /lvx* rbs_install_log.txt /i RBS.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="DemoContentDB" DBINSTANCE="SQL\SQLSP" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1

Los dos únicos parámetros que debemos tener en cuenta son el nombre de la base de datos y la instancia de SQL Server.

La ejecución de este comando puede tardar varios minutos, puedes verificar si ha terminado, desde el administrador de tareas de Windows buscando el proceso “msiexec.exe“.

Una vez finalizado debemos comprobar en el archivo de log que deja en  “C:\SPSetupInfo\rbs_install_log.txt’” que la instalación ha ido correcta, para ello buscamos casi al final del archivo el siguiente mensaje:

 Si todo ha ido correctamente, debemos instalar el anterior paquete en todos los servidores de SharePoint de la granja:

  • Accedemos al resto de servidores de SharePoint 2010 de la granja
  • Copiamos el paquete descargado “RBS.msi” a: “C:\SPSetupInfo\
  • Abrimos la consola de Windows y ejecutamos el siguiente comando en “C:\SPSetupInfo\“:
msiexec /qn /lvx* rbs_install_log.txt /i RBS.msi DBNAME="DemoContentDB" DBINSTANCE="SQL\SQLSP" ADDLOCAL=Client,Docs,Maintainer,ServerScript,FilestreamClient,FilestreamServer

Los dos únicos parámetros que debemos tener en cuenta son el nombre de la base de datos y la instancia de SQL Server. Se paciente porque este proceso tardara unos minutos en cada uno de los servidores de la granja.

Una vez finalizado debemos comprobar que las bases de datos se han creado en nuestra base de datos de contenido “DemoContentDB”, así que volvemos a  abrir el “SQL Server Management Studio”, navegamos hasta la base de datos y verificamos que nuevas tablas con el prefijo “mssqlrbs_” han sido creadas:

4) Tras configurar RBS, solo queda activar y especificar el proveedor en SharePoint 2010, por lo que:

  • Volvemos a abrir el “SharePoint 2010 Management Shell” y ejecutamos el siguiente script:
$db = Get-SPContentDatabase -Site http://miientranet/sitios/DemoSite
$db
$rbss = $db.RemoteBlobStorageSettings
$rbss | format-list
$rbss.Installed()
$rbss.Enable()
$rbss.SetActiveProviderName($rbss.GetProviderNames()[0])
$rbss | format-list

El único que parámetro que hay que indicar es la url de la colección de sitio donde debemos activarlo.

5) El ultimo paso es comprobar que los ficheros que subimos a nuestro sitio, se están almacenando físicamente en disco en vez de hacerlo en base de datos, para ello subimos varios documentos a SharePoint y tras hacerlo, comprobamos como en el directorio “C:\RBSDataStore” se ven reflejados:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *