User Profile Synchronization Service (UPSS) 几乎可以说是SharePoint最敏感的服务应用了,因为经常发生如下两种状态:
1. 永远处于启动状态(Starting)
2. 尝试启动失败最终回到停止状态(Stop)
我最近先后在两个不同的客户环境遇到多次不能启动的状态,每次原因都不一样,情况如下:
1. SharePoint 服务器端连不上UPSS数据库
2. 启动UPSS的计时器工作(Timer Job)运行无效
3. SharePoint计时器服务(Timer Job Service) 停止
对于第一次的问题,我在系统的事件查看器(Event Viewer)里面发现了ERR_config_Db,这就是说服务器连接不上相应的数据库,可是数据库服务运行良好,SharePoint也运行良好。后来我得知客户仍然使用低版本的SQL 2008 SQL客户端驱动程序,这种驱动是不支持TLS1.2以上安全协议的,然后我建议工程师下载并按照驱动程序的更新版本,最终问题得到了解决。
对于第二次的问题,我们需要了解为了启动UPSS服务,SharePoint是怎样做的。其实也很简单,SharePoint会创建一个相应的计时器服务,ProfileSynchronizationSetupJob,我们需要监控这个服务的状态就能得知具体的情况。我们发现这个计时器服务没有跑起来,手动也跑不起来,但是可以删除,于是我们删除了它。然后启动的时候就可以了,不过有时候会有一些说是FIM里面有些重复数据不能创建的问题,但是删除了之后,服务就能正常启动了。我们判断可能是过去创建的计时器服务坏了,不能工作,新的提交请求因为已经存在这个服务于是不再创建。所以创建一个新的计时器服务就解决了这个问题。
遇到第三次的问题,我们给服务器更多的时间,等了一天一夜,还是处于启动中状态。我们也尝试了用解决第二次问题的方法,还是不能解决。相应的计时器服务好像完全不想跑起来而不是跑了出错,后来我们就开始检查SharePoint里面负责调动计时器服务的程序,发现它停掉了,我们把它启动,然后问题得到了顺利的解决。
我的经验就是要多查看日志文件,系统的,SharePoint自身的,和正确的日志文件进行比对,发现哪里断了,哪里少了,就从那边补。我的印象中几乎所有的疑难杂症都是从排查ULS里面找到解决方法的。