miércoles, 29 de julio de 2009

Error al restaurar una web application en mismo server

Puede suceder que querramos probar dentro del mismo server o máquina virtual realizar un backup de nuestra aplicación sharepoint y restaurarla con otra configuración, es decir, otra url, otro puerto, otra base de datos.

Una vez finalizada la restauración podría aparecer el siguiente error:


Aplicación:
Error del objeto "Aplicacion - puerto" (nombre anterior:
AplicacionAnterior - puertoAnterior) en el evento OnRestore. Para obtener más
información, consulte el registro de errores ubicado en el directorio de copia
de seguridad. SPUpdatedConcurrencyException: Se ha producido un conflicto de
actualización y debe volver a intentar esta acción. DOMAIN\usuario está
actualizando el objeto SPWebApplication Name=Aplicacion - puerto
Parent=SPWebService, en el proceso OWSTIMER, en el equipo SERVIDOR. Para obtener más información sobre el conflicto, vea el archivo de seguimiento.


Base de Datos:
Error del objeto WSS_Content_NombreBD (nombre anterior:
WSS_Content_NombreBDanterior) en el evento OnPostRestore. Para obtener más información, consulte el registro de errores ubicado en el directorio de copia
de seguridad. SPException: No se puede adjuntar la base de datos a la aplicación
Web. Use la herramienta de la línea de comandos o las páginas de la
administración central para adjuntar la base de datos manualmente a la
aplicación Web apropiada.


Comprobamos que en el servidor sql la base de datos ha sido restaurada.

Revisamos la lista de aplicaciones web en el administrador central de sharepoint y se encuentra la aplicación web.

Además revisamos en la sección Bases de Datos de Contenido del administrador central, y efectivamente comprobamos que no fue adjuntada la base de datos nueva a dicha aplicación.


Adjuntamos la base de datos y al finalizar vemos lo siguiente:

  • Nombre de la base de datos: WSS_Content_BD
  • Estado de la base de datos: Iniciado
  • Número actual de sitios: 0
  • Advertencia del nivel de sitio: 9000
  • Número máximo de sitios: 15000

Probamos ir al explorador y escribir la nueva url y nos mostrará un HTTP 404 Not Found.

Revisamos el Event Viewer y aparece el siguiente error:

Event Type: Error

Event Source: Windows SharePoint Services 3

Event Category: Base de datos Event ID: 5763

Date: 18/07/2009

Time: 12:14:13 p.m.

User: N/A

Computer: SERVIDOR

Description:Infracción de clave primaria en la instancia de SQL Server
'SERVIDOR' en la base de datos 'SharePoint_Config'. A continuación se incluye
información adicional de SQL Server sobre el error.

Infracción de la restricción PRIMARY KEY 'PK_SiteMap'. No se puede insertar
una clave duplicada en el objeto 'dbo.SiteMap'.Se terminó la instrucción.

Volviendo al SQL Server comprobamos que tanto la base de datos WSS_Content_DB como WSS_Content_DBanterior en la tabla Sites tienen el mismo id, dicho id de sitio es el que luego se agregará en la tabla SiteMap de SharePoint_Config. Lo que traerá el error.



Solución:


Al restaurarse un sitio dentro de un server se restaura con el mismo ID con el que fue generado, por lo tanto si queremos mantener en el mismo server la versión anterior y luego una versión nueva de la aplicación SharePoint, lo que debemos hacer es lo siguiente desde el administrador central:


  1. Ir a Administración de Aplicaciones -> Bases de Datos de Contenido
  2. Seleccionar la aplicación web anterior
  3. Hacer clic en la base de datos de contenido
  4. Seleccionar la opción, Quitar base de datos de contenido. Esto no eliminará la base de datos sino que hará el desajuntar de la misma. Aceptar.
  5. Cambiar de aplicación web, si ya tiene una base de datos de contenido, y como número actual de sitios dice cero, primero debemos quitarla como lo hicimos en el paso anterior.
  6. Luego hacer clic en Agregar base de datos de contenido,
  7. Ingresar el nombre de la base de datos "versión nueva" que hemos restaurado. y Aceptar.
  8. Verificar que ahora en número actual de sitios dice 1.

Abrir un browser, escribir la nueva url y verificar el funcionamiento del sitio.

Si en algún momento queremos volver a la versión anterior, tendremos que hacer el paso inverso, primero quitar la base de datos del sitio versión nueva (desajuntar) y luego adjuntar la base de datos "versión anterior" a la web application anterior.

1 comentario:

Willy Piquer dijo...

Muy buena entrada Silvia...gracias por tu aportación.