SharePoint 2010: Profile Synchronization Service will not start - no logging

Applies to: SharePoint 2010 Administration Toolkit

Symptoms


When trying to start the User Profile Synchronization Service, the service does not start.  It stays at starting for about five minutes and then goes back to stopped.  None of the standard "ILM Configuration:" entries show up in the ULS logs at all.

Cause


The server names were changed (in the configuration database) to be something other than the NetBIOS machine name.  For example, the machine names may have been changed to be the fully qualified domain names, or the IP addresses. 
When the ProfileSynchronizationSetupJob timer job runs, it checks to see if the server name as stored in the configuration database matches the server name in the system environment variable.  If they don’t match, it silently exists and logs nothing.

You can check for this condition by running this PowerShell on the server that you are trying to start the Sync service on:

Write-host "SharePoint Machine Names:"
$farm = get-spfarm
$farm.servers
# This will list the server names (as SharePoint sees them) for every server in the farm.

write-host " "
write-host "--------------------------------------------------"
write-host "System Machine Name:"
[system.environment]::machinename
# This will list the server name stored in the environment variable.

-- If the names don’t match, for example if the system variable is the short Netbios name, and the name stored in SharePoint is the FQDN, you have this problem.

Example Output:
SharePoint Machine Names:

Address            
-------            
WFE1
App1.Contoso.com
SQLServer
 
--------------------------------------------------
System Machine Name:
App1

-- We have this problem with the App1 server.  "App1" is not equal to "App1.Contoso.com"



Notes:
- Both the SharePoint output and System output should be the Netbios (short) name.
- This is not case sensitive, so if the two show the same name, but in different case, you do not have this problem.  Example:

app1 == APP1
app1 == App1
app1 != app1.contoso.com
app1 != 192.168.1.1

Resolution


Change the SharePoint server name back to the Netbios name so that it matches [system.environment]::machinename exactly using this PowerShell:

$farm = get-spfarm
$server = $farm.servers | ? {$_.Name -eq "app1.contoso.com"}
$server.address = "app1"
$server.update()

Note: Just change the names of the server in lines 2 and 3 to match your machine names.

More Information


When looking at the verbose ULS logs filtered to category - contains - user profiles, all you see is this:

OWSTIMER.EXE (0x0F7C) 0x15DC SharePoint Portal Server User Profiles erx1 Medium Provisioning service instance User Profile Synchronization Service.

OWSTIMER.EXE (0x0F7C) 0x15DC SharePoint Portal Server User Profiles erx2 Medium The service instance User Profile Synchronization Service is successfully provisioned.

-- Then about 4-5 minutes later you see this:

OWSTIMER.EXE (0x15BC) 0x0E94 SharePoint Portal Server User Profiles g145 Unexpected Maximum number of retries done for starting FIM SpService. Please look at ULS logs and event viewer to look for the root cause of the failure. 

OWSTIMER.EXE (0x0F7C) 0x1978 SharePoint Portal Server User Profiles erx5 Medium Unprovisioning service instance User Profile Synchronization Service.

OWSTIMER.EXE (0x0F7C) 0x1978 SharePoint Portal Server User Profiles erx6 Medium The service instance User Profile Synchronization Service is successfully unprovisioned.


If you look at the unfiltered ULS traffic, and focus on the ProfileSynchronizationSetupJob timer job, you’ll see that it starts five times and exits silently (without error or warning) every time.  Finally after the fifth try, the unprovision timer job is called and the service goes back to stopped.