MOSS中的User的Title, LoginName, DisplayName, SID之间的关系
做过一些测试, 把结论写在这里.
在域中新建一个用户, 起名为登录名为domain\leiwang. 把这个用户加到MOSS的站点中.
SharePoint内容数据库中数据如下:
=================================================================
由于王蕾嫁人了, 要跟着老公改姓唐, 所以其登录名需要更换. 仅在DC中修改此处:
这个修改反映在SharePoint中如下:
SSP的User Profile
站点中
注意: 这里登录名已经需要使用leitang了. 但是可以看到Account, 和Name都没有更改.
反映在数据库中如下:
注意, 仅在DC中修改登录名, 不会对SharePoint的content database中的数据产生任何影响. 由此可见: SharePoint的用户登录不已用户名为基准, 以SID为基准. 只要SID不变, SharePoint就认为是同一个用户, 准许登录, 相同权限.
下一步, 我们在DC中进一步修改LeiTang的显示名称.
Incremental Crawl User Profile之后, Profile Sync到Content Database之后, 站点层面显示如下:
注意, 这里的Account并没有更改.
下面看同时的数据库中的状态.
可以确定界面上的Account对应在数据库层面就是tp_login. 修改AD中的所有信息都不会影响到这个属性. User Profile的更新也不会变更这个信息.
那么如何让嫁人改姓后的Lei Tang小姐在SharePoint彻底改姓呢?
答案是MigrateUser.
stsadm -o migrateuser -oldlogin yunzhang\leiwang -newlogin yunzhang\leitang -ignoresidhistory
运行上面的命令之后, 数据库中的tp_login就修改掉了.
可是发生了问题, 我们会发现在MigrateUser命令运行之后, 该用户的User Profile的更新的信息会进入SSP中, 但不会再被Sync到Content Database中了.
在SSP中删掉该用户的profile, 重新Import, Sync还是不行.
必须将用户从Site Collection中删除, 再重新添该账户到SharePoint站点中, 才可以让User Profile 能够重新Sync.
我们又进行了一次测试, 这次跳过Migrate User的动作, 直接将用户从站点集中删除(All People->Delete Users from Site Collection), 之后再将用户加回站点中来. 效果更好, User Profile的Sync都正常.
结论
===============
DC中的Display Name, Login Name都不是SharePoint辨认用户的依据, SID才是.
DB中的tp_login对应UserProfile中的Account Name, 对应具体站点中的"User Name".
DB中的tp_Title对应UserProfile中的Name, 对应具体站点的Name.
DB中的tp_login如果需要修改, 可以通过stsadm –o migrateuser改掉, 但是之后该用户的profile不会再正常sync. 在这种需求下, 最好的方式是从站点中直接将该用户删掉, 再重新加回来.