zealylee

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

SharePoint站点中用户信息与AD用户信息的“不一致”问题

先把问题描述一下:已把AD用户“User1”加到SharePoint站点中,然后进行如下类似操作:将“User1”从SharePoint站点中删除,将“User1”从AD中删除,在AD中增加一个新用户“User1”,在SharePoint站点中增加一个用户“User1”,这时,您会发现很有意思的问题:可能可以成功增加这个用户,但是这个用户始终无法登录到SharePoint站点中;或者根本增加不了这个用户到SharePoint站点中,提示您站点中已经存在这个用户了。

在上次CSDN站点的SharePoint技术聊天活动中,有参与的网友询问了类似的问题,由于当时我在聊天活动中无法给出非常详细的解释,所以只是给出了一个相关的链接。今天用这篇文章详细解释一下。

这个问题出现的原因,是出自SharePoint对于站点用户的存储机制所造成的。SharePoint站点用户信息保存在站点对应的内容数据库的UserInfo表中,如果站点管理员删除了站点中的某个用户,您可能会惊奇的发现,这个用户相应的记录并未从UserInfo表中删除,而只是将“tp_Deleted”这个列的数据进行了设置。(这种机制的原因所在是这条记录可能已经通过外键关联了其他表的其他记录,比如此用户编写的文档,所以将此记录直接删除是不可取的。)

在以后,如果站点管理员将一个同名的用户增加到这个站点中,由于UserInfo表中已经有这条用户记录的存在,所以SharePoint也只是将这条记录的“tp_Deleted”列的数据再进行设置。

这时候,问题就来了。在UserInfo表中,有一个“td_SystemID”列,这个列是用来记录这个用户的Security Identification Number(SID)的。我们在AD中删除一个用户,再新增一个同名用户,这先后两个用户的SID肯定是不同的。而SharePoint使用了这个“td_SystemID”列来识别用户,由于前后两个用户的SID肯定不同,所以SharePoint站点就“不认”在AD中重新增加的这个用户了。

解决方法就是把UserInfo表的“td_SystemID”列的数据和当前AD中的用户信息进行同步。在SqlServer中有一个SUSER_SID()函数,可以返回某用户的SID信息。在Dean的Blog上,他已经给出了一个完整的Sql语句,大家可以直接使用。

顺便题一下,在Deam的Blog上,他也描述了这个问题所造成的另外一个问题:如果我们备份站点的时候,将用户信息也一起备份了下来,在恢复到另外一个AD中时,如果站点用户有同名的现象,也同样会造成SharePoint“不认”这个AD用户。

发表于 2004年12月5日 22:42 - (阅读:6386;评论:11)

评论

# re: SharePoint站点中用户信息与AD用户信息的“不一致”问题 2004-12-5 22:55 黄炯威

我遇到的问题不知道是不是也与这个有关呢
A创建了文档1,后来A辞职了,也就在AD里已经删除掉了A用户.B是新来的员工,当B打开文档是,成员里没有B,用管理员身份添加B,整个添加过程没问题,但添加后还是没有B,而A还在,不知道是什么原因

# re: SharePoint站点中用户信息与AD用户信息的“不一致”问题 2004-12-6 10:39 Ariel

集成AD验证的系统和数据库同步一直是问题,有点恶心:-(

# re: SharePoint站点中用户信息与AD用户信息的“不一致”问题 2004-12-28 0:08 熊明锋

给一个不编程的solution。我曾经为一个用户解决过这样的问题:添加一个用户a到AD中-〉添加a到门户->从门户删除a->从AD删除a->再添加a到AD->再添加a到门户。报错:无权执行此操作(大概是这个错,记不太清楚了)。这个问题乍看和用户重名并不太一样,至少没有报此用户已存在的错。
此时在IIS中将应用程序池回收,再试,错误变为次用户已存在。于是问题明朗了。直接访问页面http://sitename/_layouts/2052/siteusrs.aspx,在WSS里,这个就是“网站集管理”里的“查看网站集用户信息”页面,在“网站设置”里可以找到;但在SPS里,没有这个链接入口,你需要直接敲URL访问。在此页面上,将a删除。再重新添加a到门户,成功。
解释:其实很简单,SPS/WSS里,当添加一个用户到站点的时候,除了在网站用户里会增加此用户并设置相应权限,这个用户还会被作为一个网站集用户被记录在网站集信息里(SPS也会有网站集的概念?别忘了,SPS站点不过是run在WSS上的应用了特殊模版的WSS站点而已),所以当我们在网站的用户管理里删除用户的时候,并没有把此用户彻底的删除。于是在某些情况下出现了这样那样的问题,而且报错也不一定是“此用户已存在”。这时候不妨试试我的办法。呵呵。

# re: SharePoint站点中用户信息与AD用户信息的“不一致”问题 2005-2-23 23:45 陈正水

将SPS站点从一个域迁移到另一个服务器上重建的完全相同的一个域上提示

“不能完成此操作。

请重试”
,用Dean的Blog的代码对用户的SID进行更新后可以正常进入访问SPS站点了,但访问SPS站点下的WSS站点时还是一样的提示

“不能完成此操作。

请重试”

请问是不是WSS站点里的用户信息是放在另一个表里需要重新同步?

# re: SharePoint站点中用户信息与AD用户信息的“不一致”问题 2005-4-12 14:55 robert yuan

将SPS站点迁移后,无法进入子网站连域管理员也不行;
环境:
源服务器appdev的AD是本机帐户方式,创建子网站的帐户例如为appdev\test;
目标服务器lm的AD是域帐户方式,域管理员为lm\Administrator;另外也建立了账户lm\test,并分配了SPS网站管理员权限;
无法进入子网站给用户分配权限,哪位兄弟知道解决方法,先谢谢啦!
联系方式
QQ:534955
E-mail:yuanzhenglin@liming.com

# re: SharePoint站点中用户信息与AD用户信息的“不一致”问题 2005-7-4 16:47 smile9961

你好,kaneboy!有问题需要请教你:我的.Net系统位于sharepoint之外,只是在sharepoint中某页面有链接;我想在用户访问该页面时先对其合法性和权限进行检验,可是如何获得用户登陆sharepoint时的AD帐号和密码呢?

原来我是在Sharepoint站点内的一个页面用IFrame来嵌入的,现在改为在Sharepoint里面有一个指向该页面的链接,不知道怎么才可能或得当前用户的登录用户名。我发现上了AD的用户,在sharepoint的一个webpart中都可以读到其用户名,但没上AD的就不行,还有就是我自己的.net页面如何与sharepoint中的webpart交换数据呢?望指点,谢谢了!

http://community.csdn.net/Expert/topic/4117/4117107.xml?temp=4.639834E-02

# re: SharePoint站点中用户信息与AD用户信息的“不一致”问题 2005-8-25 18:04 turen

我也遇到这样的问题,没有办法啊,重装WSS,问题依然,我在网站集里、用户管理中删除用户后,tp_Deleted中该用户的值由0变为4,可是再登陆依然进入。删除库中该行记录,再登陆,又进了,该用户在表中再次出现,tp_Deleted为0,有什么办法在用户管理和集里删除用户,而不删除AD帐户,该用户不再能登陆WSS?

# re: SharePoint站点中用户信息与AD用户信息的“不一致”问题 2005-8-25 18:10 turen

因此,我觉得该用户的值一定在其他表或什么地方还存在,目前我的唯一办法就是停用或删除该帐户,希望楼主能再指点,关注中

# SharePoint站点中用户信息与AD用户信息的“不一致”问题 2006-10-30 11:58 david286

SharePoint站点中用户信息与AD用户信息的“不一致”问题

# re: SharePoint站点中用户信息与AD用户信息的“不一致”问题 2006-11-6 20:01 caspar

弄了台新的WSS服务器,把数据库也重新弄了,网站所有者竟然进不了他所在的URL,会出现如下提示 “不能完成此操作。

请重试。”的错误,而当我通过Sharepoint管理中心->管理网站集所有者查看“网站URL”时也是“不能完成此操作。

请重试。
”这个错误。请高手指点一二

# re: SharePoint站点中用户信息与AD用户信息的“不一致”问题 2006-11-7 20:03 caspar

上面的情况也是SharePoint站点中用户信息与AD用户信息的“不一致”引起的。

posted on 2006-11-30 18:32  曾莹  阅读(1723)  评论(0编辑  收藏  举报