在我們實際使用過程中,會遇到域服務變更、遷移或重裝AD服務器等問題。因爲SharePoint等微軟系列產品對域環境的依賴性。當發生以上問題時,對SharePoint的影響是相當高的。
注:避免發生以上問題,是我們最值得思考的。通常,我們應該做域服務的高可用和負載均衡等架構模式,確保域服務不會宕機。
當域環境發生變化時,我們會考慮到SharePoint中的用戶以及權限這兩個問題。SharePoint中的同步用戶配置文件會將AD中的用戶信息集成到數據庫中,它們之間的關聯是通過AD的SID屬性來實現的。
遷移步驟如下:
1、數據庫服務器遷移
將數據庫服務器退域並加入新的域中。然後將SQL Server的那幾個服務的運行賬戶更改爲新域下的賬戶,並重啓數據庫服務。
打開數據庫管理器,在“安全性”中添加新域下的管理員賬戶。
2、SharePoint的FE遷移
啓動“SharePoint配置嚮導”,選擇斷開現有服務器場連接。
刪除數據庫服務器中除wss_content數據庫之外的其他SharePoint數據庫。
將SharePoint服務器退域並加入新域。
重新打開“SharePoint配置嚮導”,創建新服務器場。
打開wss_content內容數據庫,將userinfo表字段進行更改,將原賬號更改爲新域下的賬號,還要通過Suser_Sid()函數獲取SID值來更新tp_systemid字段,執行的數據庫腳本如下:
DECLARE @Login Varchar(40), @Systemid Varbinary(128) DECLARE Curusers CURSOR LOCAL FOR SELECT Tp_Login, Tp_Systemid FROM Userinfo Where Tp_Deleted = 0 OPEN Curusers FETCH NEXT FROM Curusers INTO @Login, @Systemid WHILE @@FETCH_STATUS = 0 BEGIN Begin Try PRINT 'Resetting Login ' + @Login + ' To New Login ' Update Userinfo Set Tp_Login=Replace(Tp_Login, '舊域名\','新域名\') WHERE CURRENT OF Curusers End Try Begin Catch PRINT 'Resetting Login ' + @Login + ' Failed! ' PRINT Error_Message() End Catch Begin Try PRINT 'Resetting SID ' + @Login + ' To New SID ' PRINT Suser_Sid(@Login) UPDATE Userinfo SET Tp_Systemid = Suser_Sid(Tp_Login) WHERE CURRENT OF Curusers End Try Begin Catch PRINT 'Resetting SID ' + @Login + ' Failed! ' PRINT Error_Message() End Catch FETCH NEXT FROM Curusers INTO @Login, @Systemid END CLOSE Curusers
進入SharePoint管理中心,在User Profile Service Application應用程序中執行完整同步。
如果場解決方案有問題,可以重新部署解決方案,可以參考我寫的http://642197992.blog.51cto.com/319331/1582731這篇文章。