Main /

SP 2003 Langnamen Aendern

Allgemein

Knowledge Base

Virtualisierung Emulation

Technik und Wissen

Community

Privat

%center%[[http://validator.w3.org/check?uri=referer|http://www.w3.org/Icons/valid-xhtml10.png]]%%

SP 2003 Langnamen Aendern

Sharepoint 2003 - Benutzer-Langnamen ändern

Die Langnamen im Active-Directory wurden geändert, ein AD-User-Import im Sharepoint durchgeführt, die Namen sind aber trotzdem noch die alten, was kann man tun?

Sharepoint hat leider die Angewohnheit die aktuellen Langnamen munter in Teamsites, Listeneinträgen usw. abzuspeichern. Wenn sich die Langnamen im Active Directory ändern (weil z.B. die Abteilungskürzel unternehmensweit Bestandteil des Langnamens sind, und sich die Abteilungshierarchie ändert), steht in Listen und Teamsites immer noch der alte Name. Der Grund dafür ist, dass Sharepoint die Langnamen in zwei unterschiedlichen Tabellen (in unterschiedlichen Datenbanken) redundant führt. Beim AD-Import wird nur die eine Tabelle angepasst.
Um das Problem zu lösen habe ich eine kleines TSQL-Programm geschrieben, welches die Langnamen nach einem AD-Import in der anderen Tabelle nachzieht. Ausserdem werden sämtliche Vorkommnisse des alten Benutzernamens in den persönlichen Seiten geändert.

Wichtig:
Die Datenbanknamen TABLE_SITE und TABLE_PROF müssen angepasst werden, sie sind installationsabhängig. Sie heißen allerdings immer <servername>_SITE und <servername>_PROF

/* Variablendeklarationen */
 DECLARE @newname   varchar(200)
 DECLARE @ntname    varchar(200)
 DECLARE @username  varchar(200)

 /* Cursor läuft durch Profile-Tabelle */
 DECLARE usercursor CURSOR SCROLL
 FOR
 SELECT ntname,
       preferredname,
       substring(ntname,CHARINDEX('\',ntname)+1,100) AS username
 FROM  TABLE_PROF.dbo.userprofile

 OPEN usercursor
 FETCH FIRST FROM usercursor INTO @ntname, @newname, @username

 WHILE @@Fetch_Status=0
 BEGIN
    FETCH NEXT FROM usercursor INTO @ntname, @newname, @username

    /* Aktualisieren der Langnamen in der Userinfo-Tabelle
    ** zuständig für Listeneinträge etc.
    */

    UPDATE TABLE_SITE.dbo.userinfo
    SET tp_title=@newname
    WHERE tp_login=@ntname

    /* Aktualisieren der Usernamen und Descriptions
    ** in den persoenlichen Seiten
    */

    UPDATE TABLE_SITE.dbo.Webs
    SET
        description = cast(REPLACE(cast(description AS nvarchar(4000)),
                      title, @newname) AS ntext),
        title = @newname
    WHERE
        parentwebid IS NULL
        AND substring(FullUrl,CHARINDEX('/',FullUrl)+1,100) = @username
 END
 DEALLOCATE usercursor
 
Frische Änderungen (All) | Edit SideBar Zuletzt geändert am 12.11.2008 09:48 Uhr Seite Bearbeiten | Seitenhistorie
Powered by PmWiki