domingo, 3 de marzo de 2013

Recuperando manualmente las estadísticas de uso de la colección de sitios en SharePoint 2007

SharePoint 2007 trajo con sigo un nuevo amigo Shared Service Provider o SSP el cual no continuó en la siguiente versión SharePoint 2010, y una razón muy importante fue porque este servicio compartía muchas funcionalidades; entre ellas Perfiles de Usuario, Búsqueda, Audiencias, Catalogo de Datos del Negocio o BDC, estadísticas de uso de sitios y de la búsqueda, esto lo hacia poco escalable y muy dependiente entre sus funcionalidades si uno fallaba podía afectar a los demás o al recuperar uno afectaba al resto.  Y eso es lo que me sucedió la búsqueda no respondía, así que tuve que crear un nuevo proveedor de servicios compartidos, migrar las aplicaciones a este nuevo SSP y configurar de nuevo Perfiles, Búsqueda y el resto de funcionalidades, pero perdí las estadísticas de uso del sitio del SSP anterior, entonces me pregunté que tan difícil podría ser actualizar esta información manualmente vía T-SQL a nivel de base de datos porque al final era tablas con información, y no pensaba que podría estar corrompiendo el SharePoint ya que es información estadística y además en el pasado revisando las bases de datos de SharePoint especialmente las de contenido no tienen integridad referencial o triggers que me preocuparán ya que generalmente son tablas con llaves primarias auto numéricos o de números de identificación única y una buena cantidad de procedimientos almacenados.  Y sabes amigo lector, estaba en lo cierto, la suerte estaba de mi lado, solo me tenía que preocupar de actualizar las tablas en un orden lógico relacional y percatarme de no intentar insertar la llave cuando es un auto numérico.

Antes de empezar por favor lea detenidamente el siguiente descargo de responsabilidad:

Este método no es soportado ni recomendado por Microsoft, es una solución alterna para resolver el problema de recuperar las estadísticas de uso del sitio de un proveedor de servicios compartidos corrompido.

Primero  lo primero, la base de datos donde se almacena las estadísticas de uso de los sitios de SharePoint esta  en la base de datos del SSP que su nombre sugerido es SharedServices1_DB.

Las tablas y el orden de actualización que vamos obtener la información y actualizarla en la nueva base de datos son las siguientes:

ANLDay

ANLHistoricalSiteUsage

ANLHistoricalWebUsage

ANLResource

ANLUser

ANLHit

ANLShadowResource

ANLWeb

El procedimiento a seguir entonces es insertar la información de estas tablas en el nueva base de datos SSP de la siguiente forma:

 

--Se registra casi todas las columnas de la tabla menos la llave primaria que es auto numerica
insert into [Base Datos SSP Nuevo].dbo.ANLDay 
(DayId,ResourceId,ResourceId,UserId,ReferrerResourceId)
select 
DayId,ResourceId,ResourceId,UserId,ReferrerResourceId
from [Base Datos SSP Anterior].dbo.ANLDay
--Se registra casi todas las columnas de la tabla menos la llave primaria que es auto numerica
insert into [Base Datos SSP Nuevo].dbo.ANLHistoricalSiteUsage 
(DayId,ResourceId,ResourceId,UserId,ReferrerResourceId)
select 
DayId,ResourceId,ResourceId,UserId,ReferrerResourceId
from [Base Datos SSP Anterior].dbo.ANLHistoricalSiteUsage
--Se registra casi todas las columnas de la tabla menos la llave primaria que es auto numerica
insert into [Base Datos SSP Nuevo].dbo.ANLHistoricalWebUsage
(DayId,ResourceId,ResourceId,UserId,ReferrerResourceId)
select 
DayId,ResourceId,ResourceId,UserId,ReferrerResourceId
from [Base Datos SSP Anterior].dbo.ANLHistoricalWebUsage
--Se registra casi todas las columnas de la tabla menos la llave primaria que es auto numerica
insert into [Base Datos SSP Nuevo].dbo.ANLResource 
(WebAppGuid,SiteGuid,WebGuid,DocName,FullUrl,HostDns)
select 
WebAppGuid,SiteGuid,WebGuid,DocName,FullUrl,HostDns
from [Base Datos SSP Anterior].dbo.ANLResource 
--Se registra casi todas las columnas de la tabla menos la llave primaria que es auto numerica
insert into [Base Datos SSP Nuevo].dbo.ANLUser (UserName)
select 
UserName 
from [Base Datos SSP Anterior].dbo.ANLUser 
--Se registra casi todas las columnas de la tabla menos la llave primaria que es auto numerica
insert into [Base Datos SSP Nuevo].dbo.ANLHit 
(DayId,ResourceId,UserId,ReferrerResourceId)
select 
DayId,ResourceId,UserId,ReferrerResourceId
from [Base Datos SSP Anterior].dbo.ANLHit 
-- todas las columnas son actualizadas ya que no tiene una lleve auto numerica
insert into [Base Datos SSP Nuevo].dbo.ANLShadowResource 
select *
from [Base Datos SSP Anterior].dbo.ANLShadowResource 
-- todas las columnas son actualizadas ya que no tiene una lleve auto numerica
insert into [Base Datos SSP Nuevo].dbo.ANLWeb 
select 
*
from [Base Datos SSP Anterior].dbo.ANLWeb 

Luego se podrá revisar la información desde la interfaz Web de SharePoint a través de la opción Acciones del Sitio, Configuración del Sitio, Informe de Uso de la colección de sitios o bien del sitio.


En este artículo vimos que es posible actualizar manualmente las estadísticas de uso de los sitios de SharePoint 2007 actualizando la base de datos SharedServices1_DB o equivalente, también es importante que no es una solución soportada y recomendada por Microsoft así que esta por su propia cuenta y riesgo. Que según lo realizado no afecto  en nada el funcionamiento de SharePoint y como indique al principio las tablas de SharePoint no tiene integridad referencial por lo que es muy sencilla su actualización manual.  Por favor amigo lector no lo estoy motivando para actualizar el contenido de SharePoint que esto sería demasiado riesgoso sino para las estadísticas de SharePoint 2007 es una solución alternativa para una recuperación necesaria para la información que es útil para los usuarios acerca del uso de sus sitios.


SharePoint4Fun!,


Juan Manuel Herrera Ocheita

No hay comentarios.: