lunes, 4 de junio de 2012

Moviendo un sub-sitio a una colección de sitios

Esta necesidad es imperante cuando el bases de datos de contenido de SharePoint alcanzan su tamaño optimo que es 100 GB o máximo para una sola colección de sitios dentro de la base de datos de 200 GB, para ambientes de intranet de colaboración.

Mas información sobre estos límites en: http://technet.microsoft.com/en-us/library/cc262787.aspx#Boundaries

En este artículo planteo como trasladar un sitio a una nueva colección de sitios que este en una nueva base de datos de contenido.
El procedimiento a realizar el el siguiente:
1) Crear una copia de respaldo del sitio que deseamos migrar
2) Crear una nueva base de datos de contenido donde vamos a depositar el contenido migrado
3) Crear un sitio con la misma plantilla de la copia de respaldo del sitio que se desea migrar.
3) Restaurar la copia de respaldo del sitio en la nueva ubicación
4) Validar que el contenido este subido y haya respetado los permisos.
5) Eliminar el contenido que fue migrado para liberar espacio en la base de datos de contenido.

En este ejemplo existe un sitio llamado MiEmpresa el cual será trasladado a una nueva colección de sitios dentro de una nueva base de datos de contenido.
image
Donde dicho sitio esta ubicado en la base de datos de contenido WSS_Content_Portal y esta contiene 5 sitios colecciones de sitios; con lo cual esperamos al final tener en la nueva base de datos de contenido una nueva colección de sitios también.
image
Para extraer la información vamos utilizar el comando de SharePoint Management Shell Export-SPWeb de la siguiente forma:
Export-SPWeb -Identity http://demosp2010/miempresa -path c:\temp\miempresa.cmp -IncludeUserSecurity -IncludeVersions All
Esto generó 3 archivos y al revisar el log se puede validar que no hubieron inconvenientes y podemos proseguir con el procedimiento.
image

Ahora vamos a crear la nueva base de datos de contenido y lo vamos hacer con la línea de comando New-SPContentDatabase de la siguiente forma:
New-SPContentDatabase -Name WSS_Content_MiEmpresa -WebApplication http://demosp2010
El Mensaje de una operación exitosa debería ser similar al de abajo:

Id               : 997aa020-1f9a-4e19-92b8-a0b8435cdb9d
Name             : WSS_Content_MiEmpresa
WebApplication   : SPWebApplication Name=SharePoint - 80
Server           : demosp2010
CurrentSiteCount : 0
Desde el CA podemos ver en la sección Manage Content Database la nueva base de datos de contenido recién creada con ninguna colección de sitios aún.
image
Ahora vamos a crear la colección de sitios en la nueva base de datos de contenido.  Esto lo vamos hacer con el comando New-SPSite de la siguiente forma:
New-SPSite -url http://demosp2010/sitios/miempresa -owneralias "demo\administrator" -Template "STS#0" -ContentDatabase WSS_Content_MiEmpresa
Nota: Donde –url es la url de la nueva colección de sitios.  /sitios/ es una ruta administrada o Managed Path para indicarle a SharePoint donde inicia la colección de sitios. La plantilla “STS#0” Equivale a la plantilla de sitio de Equipo, y por ultimo indicamos el nombre de la base de datos de contenido donde va hacer creada esta colección.
El mensaje final luego de ejecutar este comando es el siguiente:
Url
---
http://demosp2010/sitios/miempresa
image
Ahora vamos a importar el contenido sobre esta nueva colección de sitios.  Esto lo vamos hacer con el comando Import-SPWeb de la siguente manera:
Import-SPWeb -Identity http://demosp2010/sitios/miempresa -path c:\temp\miempresa.cmp -force -includeusersecurity -UpdateVersions Overwrite
Nota: Debemos indicarle el parámetro –force ya que es necesario que sobreescriba sobre el contenido que se creo con la plantilla de equipo.
Si revisamos el log validamos si no hubieron errores.  Que en este ejemplo solo finalizamos con una advertencia, con lo que podemos dar como éxito la migración.
image
Si vemos el sitio ahora tiene la apariencia del sitio que decidimos migrar.
image
Nota: Hay un elemento web indicando error pero esto se debe a que esta apuntando a otro lado y como no es parte del contenido, no hay mayor problema de que preocuparse.  En en este caso si deseáramos corregirla solo debemos corregir hacia donde esta apuntando o bien eliminar el elemento Web si ya no lo deseamos.
Por ultimo vamos a eliminar el sitio anterior para liberar el espacio deseado. Eso lo vamos hacer con la línea de comando Remove-SPWeb de la siguiente manera:
Remove-SPWeb -Identity http://demosp2010/miempresa
Pero surge que esta sitio tiene sub-sitios por lo que no podemos eliminarlo de una sola vez.  El mensaje que desplegó al ejecutar el comando es el siguiente:
Confirm
Are you sure you want to perform this action?
Performing operation "Remove-SPWeb" on Target "http://demosp2010/miempresa".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):y
Remove-SPWeb : Error deleting Web site "/miempresa". You can't delete a site th
at has subsites.
At line:1 char:13
+ Remove-SPWeb <<<<  -Identity http://demosp2010/miempresa
    + CategoryInfo          : InvalidData: (Microsoft.Share...CmdletRemoveWeb:
   SPCmdletRemoveWeb) [Remove-SPWeb], SPException
    + FullyQualifiedErrorId : Microsoft.SharePoint.PowerShell.SPCmdletRemoveWe
   b
Para conocer que sub-sitios están debajo del sitio a eliminar ejecutamos la siguientes líneas:
$web = get-spweb http://demosp2010/miempresa
$webs = $web.GetSubwebsForCurrentUser()
foreach($miweb in $webs) {write-host $miweb.url}
El resultado es el siguiente:
http://demosp2010/miempresa/MiBlog
http://demosp2010/miempresa/MyBlog
Podemos crear un script para eliminarlos todos o bien hacerlo uno por uno como lo hare con las siguientes líneas ya que son pocos
Remove-SPWeb -Identity http://demosp2010/miempresa/miblog -confirm:$false
Remove-SPWeb -Identity http://demosp2010/miempresa/myblog -confirm:$false
Remove-SPWeb -Identity http://demosp2010/miempresa -confirm:$false
Si vemos las base de contenido observaremos que WSS_Content_MiEmpresa ya tiene una colección de sitios.
image
Eso es todo amigos!.
En este artículo vimos como migrar un sub-sitio a una nueva colección de sitios y esta dentro de una nueva base de datos de contenido, con el propósito de liberar el espacio en la base de datos de contenido existente.
Los comandos que utilizamos para realizar esta tarea fueron:
Export-SPWeb
New-SPContentDatabase
New-SPSite
Import-SPWeb
Remove-SPWeb
Get-SPWeb

SharePoint4Fun!,
Juan Manuel Herrera Ocheita

No hay comentarios.: