Fix those SIDs

http://www.sharepointblogs.com/dustin/archive/2004/09/10/756.aspx

 

Thanks to my good friend Jeremy McMahan for finding the suser_sid() function for me -- My original solution was a crazy mix of linked servers and the Directory Services provider for OLEDB!

Ever migrate your SharePoint site to a totally new environment and discover that your efforts to re-create your Active Directory were all for nothing, since all the users got new SIDs?  Symptoms like: The administrator of the server can log in, but nobody else can, even though you're SURE their usernames and passwords are right.

Here's a script that'll fix that up for you in a jif.  Open Query Analyzer and run it against the content database for your site, and it will update all the SIDs for your users to the SID that is reported for that user by Active Directory.

Big fat disclaimer: Microsoft does NOT support ANY modifications to your SharePoint databases.  That's not to say they won't support your SharePoint site, but if this operation breaks your server, Microsoft won't help you.  I'm not responsible for the results, either, while we're on the subject of passing the buck.  BACK UP YOUR DATABASE.

Okay, now that we've gotten that mumbo-jumbo out of the way, here's the code.

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
	PRINT 'Resetting user ' + @login + ' to new SID '
	PRINT suser_sid(@login)
	UPDATE UserInfo
		SET tp_systemid = suser_sid(tp_login) WHERE CURRENT OF curUsers
	FETCH NEXT FROM curUsers INTO @login, @systemid
END

CLOSE curUsers
DEALLOCATE curUsers

GO
發佈了39 篇原創文章 · 獲贊 0 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章