SharePoint站點中用戶信息與AD用戶信息的“不一致”問題

http://blog.joycode.com/kaneboy/archive/2004/12/05/40487.aspx

先把問題描述一下:已把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

href="http://blog.joycode.com/kaneboy/Services/Pingback.aspx" rel="pingback" />

評論

 

我遇到的問題不知道是不是也與這個有關呢
A創建了文檔1,後來A辭職了,也就在AD裏已經刪除掉了A用戶.B是新來的員工,當B打開文檔是,成員裏沒有B,用管理員身份添加B,整個添加過程沒問題,但添加後還是沒有B,而A還在,不知道是什麼原因

 re: SharePoint站點中用戶信息與AD用戶信息的“不一致”問題 2004-12-6 10:39

集成AD驗證的系統和數據庫同步一直是問題,有點噁心:-(

 re: SharePoint站點中用戶信息與AD用戶信息的“不一致”問題 2004-12-28 0:08

給一個不編程的solution。我曾經爲一個用戶解決過這樣的問題:添加一個用戶a到AD中-〉添加a到門戶->從門戶刪除a->從AD刪除a->再添加a到AD->再添加a到門戶。報錯:無權執行此操作(大概是這個錯,記不太清楚了)。這個問題乍看和用戶重名並不太一樣,至少沒有報此用戶已存在的錯。
此時在IIS中將應用程序池回收,再試,錯誤變爲次用戶已存在。於是問題明朗了。直接訪問頁面,這個就是“網站集管理”裏的“查看網站集用戶信息”頁面,在“網站設置”裏可以找到;但在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

將SPS站點遷移後,無法進入子網站連域管理員也不行;
環境:
源服務器appdev的AD是本機帳戶方式,創建子網站的帳戶例如爲appdev/test;
目標服務器lm的AD是域帳戶方式,域管理員爲lm/Administrator;另外也建立了賬戶lm/test,並分配了SPS網站管理員權限;
無法進入子網站給用戶分配權限,哪位兄弟知道解決方法,先謝謝啦!
聯繫方式
QQ:534955
E-mail:[email protected]

 re: SharePoint站點中用戶信息與AD用戶信息的“不一致”問題 2005-7-4 16:47

你好,kaneboy!有問題需要請教你:我的.Net系統位於sharepoint之外,只是在sharepoint中某頁面有鏈接;我想在用戶訪問該頁面時先對其合法性和權限進行檢驗,可是如何獲得用戶登陸sharepoint時的AD帳號和密碼呢?

原來我是在Sharepoint站點內的一個頁面用IFrame來嵌入的,現在改爲在Sharepoint裏面有一個指向該頁面的鏈接,不知道怎麼纔可能或得當前用戶的登錄用戶名。我發現上了AD的用戶,在sharepoint的一個webpart中都可以讀到其用戶名,但沒上AD的就不行,還有就是我自己的.net頁面如何與sharepoint中的webpart交換數據呢?望指點,謝謝了!

 re: SharePoint站點中用戶信息與AD用戶信息的“不一致”問題 2005-8-25 18:04

我也遇到這樣的問題,沒有辦法啊,重裝WSS,問題依然,我在網站集裏、用戶管理中刪除用戶後,tp_Deleted中該用戶的值由0變爲4,可是再登陸依然進入。刪除庫中該行記錄,再登陸,又進了,該用戶在表中再次出現,tp_Deleted爲0,有什麼辦法在用戶管理和集裏刪除用戶,而不刪除AD帳戶,該用戶不再能登陸WSS?

 re: SharePoint站點中用戶信息與AD用戶信息的“不一致”問題 2005-8-25 18:10

因此,我覺得該用戶的值一定在其他表或什麼地方還存在,目前我的唯一辦法就是停用或刪除該帳戶,希望樓主能再指點,關注中

 

# re: SharePoint站點中用戶信息與AD用戶信息的“不一致”問題 2004-12-5 22:55 黃炯威
發佈了39 篇原創文章 · 獲贊 0 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章