MOSS2007中用户信息的同步
本文介绍了从SSP数据库到content数据库间用户信息的同步过程, 同时还介绍了一些常见的解决问题的方法.
文档库, 列表中可以找到的一些用户名(Username)标签, 如下:
从用户和组页面, 你可以找到用户详细信息展示页面:
在MOSS中, SSP数据库会与Active Directory中的数据进行同步, 这样我们就在数据库中有了跟Active Directory中对象的一份拷贝. 然后这份拷贝会被同步到你站点集的用户名标签, 以及用户详细信息展示页面. 同步的途径是通过下面两个定时器作业(Timer job):
- Profile Synchronization- 这个作业每小时运行一次, 而且是每一个Web Application都有一个该作业. 该作业的作用是从SSP中的user profile信息向content database中进行同步. stsadm –o sync –synctiming <schedule(M/H/D:value)>
- Quick Profile Synchronization- 如果性能允许的话, 会每分钟运行一次, 同样也是每个web application都会有一个.该作业的作用是对站点中新添加的用户的prifile信息从SSP中sync过来. stsadm –o sync –sweeptiming <schedule(M/H/D:value)>
问题, 引起问题的原因, 以及修复
================================
第一种状况: 不恰当地移动内容数据库!
==================
为什么移动数据库会破坏同步呢? 我们在配置数据库中存储内容数据库的ID. 如果不恰当地移动内容数据库, SSP不会知道新的GUID, 定时器作业会继续与旧的GUID进行同步, 而不允许我们与新的进行同步.
如何修复它? 进行下面的步骤:
---------------
a. 运行命令stsadm -o sync -listolddatabases 1 . 你将会得到一个数据库GUID的列表. 该命令返回过去n天内没有被成功sync的数据库.
b. 运行命令stsadm -o sync -deleteolddatabases 1 . 这会从SSP数据库中移除过去n天内没有被成功同步的数据记录, 但是不会去触碰实际的内容数据库.
c. 等待下一次的同步之后, 你就会发现用户名标签被更新了.
如何避免这样的问题? 在你在web application间移动内容数据库之前, 请遵循下面的步骤.
----------------
a. 运行命令stsadm -o preparetomove -contentdb <Name of DB> -url http://UrlofWebApplication
b. 然后断开数据库, 然后把它移动到相同服务器场中的另外一个web application上.
注意: 如果你安装了infrastructure update, 你就不需要运行这个命令来移动数据库了, 因为制作索引的关系, 微软修改了从web application中摘下再附着数据库时, 处理Database ID的方式.
第二种状况: 数据库被设置为离线状态, 通过Central Administration -> Application Management -> Content Databases.
==================
为什么这会破坏同步呢? 因为执行同步的定时器作业会先查看数据库是否处于离线状态(offline), 如果是, 那么定时器作业就会不做任何修改地结束.
如何修复呢?
--------------
a. 选择数据库, 这样你就可以编辑属性了.
b. 修改数据库的状态为ready.
如何避免呢?
-------------
阻止人们向内容数据库中添加站点集, 可以避免这种情况. 方法是在属性里设置"Maximum number of sites that can be created in this database"
第三种状况: 定时器作业的问题
=================
为什么这个会破坏同步呢? 有两个定时器作业"Profile Synchronization" 和 "Quick Profile Synchronization" . 他们需要被开启.
如何修复?
--------------
取决于具体情况, 有很多资料可以帮助你处理计时器作业, 计时器服务的问题. 先要记住, 计时器作业需要被开启.
如何避免?
---------------
确保你服务器场的健康状态, 安装准许的更新, 让容量保持在计划以内, 件事你的ULS日志和事件日志.
第四种状况: 用户在站点上没有激活.
=================
为什么这会破坏同步呢? 当定时器作业运行的时候, 它们会检查userinfo表, 看tp_IsActive = True 还是 False. 它们仅会在这个属性设为true的时候才会更新用户的tag.
如何修复?
--------------
让用户登录到站点中, 然后做一个修改文档, 或者编辑链接的动作. 这会打开开关为True. 然后等待定时器作业的完成.
Guidance: User info synch in MOSS 2007
http://blogs.msdn.com/spfargo/archive/2009/02/13/guidance-user-info-synch-in-moss-2007.aspx