sábado, 12 de mayo de 2012

Resolviendo el problema People search relevance is not optimized when the Active Directory has errors in the manager reporting structure SharePoint Server 2010

Este problema puede ser un sencillo de resolver o casi imposible de hacerlo.  Aunque no es un error con el cual no podamos vivir con el, si es molesto estarlo viendo y no hacer nada al respecto.

El detalle del error en el analizador de salud del Central Administration de SharePoint Server 2010 es el siguiente:

image

La solución indica que debes de ejecutar las siguientes líneas de comando en PowerShell for SharePoint 2010.

$upaProxy = Get-SPServiceApplicationProxy [appid]

Add-SPProfileLeader -ProfileServiceApplicationProxy $upaProxy –Name [domain\user]

Lo primero que se debe hacer es conocer el Id del Proxy del Servicio de Aplicación.   Para ello se debe de ejecutar el comando Get-SPServiceApplicationProxy, esto nos moestra el listado de los proxies creados y uno de ellos es el de los perfiles de usuario.  Ahora con el Id ya se puede ejecutar las dos líneas de comando.

$upaProxy = Get-SPServiceApplicationProxy ab4d77c8-d6de-4e3d-8caf-928c29188cb3

Add-SPProfileLeader -ProfileServiceApplicationProxy $upaProxy -Name "domino\usuario"

El primer error al cual nos enfrentáramos será el siguiente error:

Object reference not set to an instance of an object.

Este error se genera por falta de permisos.  Primordialmente es con que usuario ejecutamos PowerShell for SharePoint 2010.  Deberíamos ejecutarlo con el usuario que es el administrador de la granja, normalmente se llama spfarm.  Para ello antes de ejecutar el Shell dejamos presionado la tecla Shift, y luego hacemos clic derecho sobre la opción PowerShell for SharePoint 2010.  Deberemos seleccionar la opción Ejecutar como otro usuario, allí debemos de colocar el usuario y las credenciales.

image

image

Luego si ejecutamos otra vez la línea de comando, nos da el siguiente error:

Performing operation "Add-SPProfileLeader" on Target "dominio\usuario".

[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help

(default is "Y"):y

Failed. User 'dominio\usuario' has a manager.

 

Bueno… si este usuario tiene asignado un manager en el Directorio Activo, favor elimínelo o bien cambie el usuario, Y luego sincronice los perfiles de usuario y valide que ya no hay valor en la propiedad Manager.  Pero si de todos modos le sigue dando error, sigua los siguientes pasos:

*** Descargo de responsabilidad:  Este procedimiento no es soportado por Microsoft, ya que afectamos directamente una de las bases de datos de SharePoint a nivel , pero en mi opinión es un cambio muy leve sin repercusiones ***

Necesitamos abrir el Management Studio de SQL Sever, ubicar la base de datos de Perfiles de Usuario algo parecido a SharePoint_UserProfile_XXXXX y la tabla que necesitamos es UserProfile_Full.  Luego ejecutamos el siguiente query:

SELECT

[UserID]

,[NTName]

,[PreferredName]

,[Email]

,[SID]

,[Manager]

FROM [SharePoint_UserProfile].[dbo].[UserProfile_Full]

where NTName = 'dominio\usuario'

Si vemos el campo encontraremos que no hay valor alguno pero no es nulo, y allí el error generado, o buen esa es mi mejor deducción.

begin tran

update [SharePoint_UserProfile].[dbo].[UserProfile_Full]

set Manager = null

where NTName = 'dominio\usuario'

(1 transaction was affected)

commit tran

Eso es todo, ejecute de nuevo la línea de comando y eso eso todo!.   El mensaje de éxito deberá indicar User dominio\usuario added as a leader.

image

Como paso final diríjase al Central Administration valide la alerta y vea cómo se desvanece.

SharePoint4Fun!,

 

Juan Manuel Herrera Ocheita

No hay comentarios.: