Si “Profile Syncronization Status” queda en un estado “Stopping” o “Syncronizing” por más de 1 hora, revisa si el servicio de “Forefront Identity Manager Service” está detenido
Este servicio es el que gestiona las sincronizaciones.
Si “Profile Syncronization Status” queda en un estado “Stopping” o “Syncronizing” por más de 1 hora, revisa si el servicio de “Forefront Identity Manager Service” está detenido
Este servicio es el que gestiona las sincronizaciones.
En el Event Viewer aparecerían los siguientes errores relacionados a contadores:
The Open Procedure for service "BITS" in DLL "C:\Windows\System32\bitsperf.dll" failed. Performance data for this service will not be available. The first four bytes (DWORD) of the Data section contains the error code.
Windows cannot load the extensible counter DLL CcmFramework. The first four bytes (DWORD) of the Data section contains the Windows error code.
The Open Procedure for service "WmiApRpl" in DLL "C:\Windows\system32\wbem\wmiaprpl.dll" failed. Performance data for this service will not be available. The first four bytes (DWORD) of the Data section contains the error code.
The Open Procedure for service "FIMSynchronizationService" in DLL "D:\Appls\Microsoft\Sharepoint\15.0\Synchronization Service\Bin\mmsperf.dll" failed. Performance data for this service will not be available. The first four bytes (DWORD) of the Data section contains the error code.
Para solucionarlo puedes revisar lo siguiente:
WMI Performance Adapter
Windows Management Instrumentation
Remote Registry
KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BITS\Performance
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WmiApRpl\Performance
Puedes usar el siguiente script para dar permisos:
$regKeys = @("HKLM:\SYSTEM\CurrentControlSet\Services\BITS\Performance","HKLM:\SYSTEM\CurrentControlSet\Services\WmiApRpl\Performance")
$regAccount = "$env:COMPUTERNAME\WSS_WPG"
$regPermission = "FullControl"
$regPermToggle = "Allow"
foreach ($regKey in $regKeys){
$acl = Get-Acl $regKey
$rule = New-Object System.Security.AccessControl.RegistryAccessRule ($regAccount,$regPermission,"ContainerInherit","None",$regPermToggle)
$acl.SetAccessRule($rule)
$acl | Set-Acl -Path $regKey
}
También puedes usar Process Monitor para evaluar access denied
Revisar si los grupos también tenien permisos sobre los folders donde están las definiciones de los contadores.
Abre una línea de comando con permisos de administrador, ve (CD path) hasta el path donde está la dll que lanza el error, ej: C:\Windows\System32\ y ejecuta lo siguiente:
lodctr.exe /q:BITS
lodctr.exe /q:FIMSynchronizationService
lodctr.exe /q:WmiApRpl
Si alguno de los contadores está deshabilado ejecutar lo siguiente:
lodctr.exe /e:BITS
lodctr.exe /e:FIMSynchronizationService
lodctr.exe /e:WmiApRpl
También puedes usar el nombre de la DLL para habilitar los contadores
lodctr /e:<DLL name> donde DLL name puede ser por ejemplo bitsperf.dll
En una línea de comandos (run as a administrator),ejecutar lo siguiente:
Lodctr /R
Al crear la conexión de sincronización de perfiles mediante el servicio de User Profile Syncronization, la consulta al AD para buscar los containers de OU´s, se quedaba en estado “Querying” y nunca terminaba.
Entonces lo que hice fue buscar en los logs (ULS Log Category: User Profiles) de Sharepoint para ver que estaba pasando. Vi el siguiente mensaje:
EditDSServer.PopulateContainers(): System.Threading.ThreadAbortException: Thread was being aborted.
at System.Web.UI.WebControls.TreeView.CollapseAll()
at Microsoft.SharePoint.Portal.UserProfiles.AdminUI.EditDSServer._GetContainersAndFillTreeView(LdapConnection ldapConnection, Boolean useOnlyPreferredDomainControllers)
at Microsoft.SharePoint.Portal.UserProfiles.AdminUI.EditDSServer.PopulateContainers(Object sender, EventArgs args).
Getting Error Message for Exception System.Web.HttpException (0x80004005): Request timed out.
System.Web.HttpException: Request timed out.
Solución:
Import-Module -Name ActiveDirectory
Get-ADObject -Filter { ObjectClass -eq 'organizationalunit' } | Select-Object -Property DistinguishedName
$upaAppProxy = Get-SPServiceApplicationProxy | ? {$_.name -like 'User Profile Service Proxy'}
$upaAppProxy.LdapConnectionTimeout = 1800 //valor en segundos
$upaAppProxy.Update()$upaApp = Get-SPServiceApplication | ? {$_.name -like ‘User Profile Service’}
$upaApp.FIMWebClientTimeOut = 1800000 //valor en milisegundos
upaApp.ImportConnAsyncTimeout
$upaApp.Update()
<httpRuntime maxRequestLength="204800" executionTimeout="999999" />
Realizando estos cambios, pude hacer que se muestre las OU´s de nuestro AD, para seleccionar que querer importar.
Cuando realizamos una sincronización de perfiles de usuario del AD a Sharepoint, la cuenta de usuario que realiza la importación debe tener el permiso Replicate Directory Changes sobre el dominio sobre el cual queremos realizar la sincronización.

Para hacerlo podemos seguir el siguiente artículo:http://technet.microsoft.com/en-us/library/hh296982(v=office.15).aspx#RDCdomain
Este permiso permite que una cuenta consulte por cambios en el directorio.
Hay un caso especial donde se requerirá un permiso especial para poder importar correctamente la información. Veamos los dos casos posibles:
Cómo podemos saber el NETBIOS de nuestro dominio? Una posibilidad es usar “Active Directory Users and Computers”, click derecho sobre el dominio y “Properties”.

También podems averiguarlo mediante nbtstat –n
Para el caso 1, necesitaremos el permiso Replicate Directory Changes sobre el dominio sobre el cual queremos realizar la sincronización.
Para el caso 2, necesitaremos un permiso especial más, además del seteado en el caso 1.
Por ej: suponemos que nuestro dominio sea
Domain netbios name: CONTOSO
FQDN of Domain: contoso.corp.com
El permisos que necesitaremos es el de Replicate Directory Changes sobre el container (CN) de configuration de nuestro dominio.(Procedimiento)
CN=Configuration, DC=corp,DC=com
![]()
En el segundo caso también deberemos setear la propiedad NetBiosDomainNamesEnabled en el User Profile de nuestra granja.
Ej:
Siempre aparece un nuevo error cuando configuramos el User Profile Syncronization. Cada implementación del user profile syncronization difiere de las anteriores.
Las mejores guías para solucionar el inicio del servicio de User Profile Syncronization:
http://www.harbar.net/articles/sp2010ups2.aspx
http://blogs.technet.com/b/steve_chen/archive/2010/09/20/user-profile-sync-sharepoint-2010.aspx
En este caso en particular, en el event viewer me aparecía el siguiente error:
.Net SqlClient Data Provider: System.Data.SqlClient.SqlException: HostId is not registered
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader()
at Microsoft.ResourceManagement.Data.DataAccess.RetrieveWorkflowDataForHostActivator(Int16 hostId, Int16 pingIntervalSecs, Int32 activeHostedWorkflowDefinitionsSequenceNumber, Int16 workflowControlMessagesMaxPerMinute, Int16 requestRecoveryMaxPerMinute, Int16 requestCleanupMaxPerMinute, Boolean runRequestRecoveryScan, Boolean& doPolicyApplicationDispatch, ReadOnlyCollection`1& activeHostedWorkflowDefinitions, ReadOnlyCollection`1& workflowControlMessages, List`1& requestsToRedispatch)
Y en los logs de ULS de Sharepoint:
Medium ILM Configuration: Post setup configuration.
High ILM Configuration: Post setup configuration failed with error code –532459699
Para solucionarlo tuve que habilitar las opciones de “Auto Create Statistics” y “Auto Update Statistics” en la base de Sync. Después de habilitar estas opciones, reinicie el servicio de windows.
Para finalizar hice un iisreset, y el servicio cambio el estado a Started.
1-Características Sharepoint 2013
http://www.learningsharepoint.com/2012/03/31/sharepoint-2013-features-and-resources/
2- User profile synchronization service no se inicia
http://melick-rajee.blogspot.com.ar/2012/04/user-profile-synchronization-service.html
3-Despertar (warm up) los app pool de Sharepoint
http://abdulrafaysbiztalk.wordpress.com/tag/iis-warm-up-module/
4-Virtualizando Sharepoint 2010
5-Configurar la búsqueda para indexar contendio externo, ej: un share
http://sharepoint.mindsharpblogs.com/Timothy/archive/2012/03/31/Finding-and-Targeting-Content.aspx
6-Tesauros en Sharepoint 2010
7-Mostrar el numero de fax en los resultados de búsqueda Sharepoint 2010
8-Indexando contenido case sensitive
9-Agregando controles safecontrols en Sharepoint con Visual Studio 2010
10-Algunas tools en codeplex
11-Crear una custom health rule
http://blog.scosby.com/post/2010/04/26/Custom-Health-Rules-in-SharePoint-2010.aspx
12- Solucionar problema de vista mobile en Sharepoint 2010 para usuarios anónimos.
http://blog.mastykarz.nl/inconvenient-sharepoint-2010-mobile-redirect/
Gran artículo sobre la implementación de User Profile Syncronization