in

SharePoint Blogs

The Best Place for SharePoint-related Blogs

This Blog

Syndication

News

Ein guter Blog lebt auch vom Feedback der Leser. Aus diesem Grund möchte ich alle Leser bitten und auffordern, Feedback und Bewertung für einzelne Posts abzugeben. Ich freue mich natürlich auch, wenn mein Blog oder auch einzelne Posts verlinkt werden. Dies hilft anderen Leser und ist zugleich auch Ansporn für mich!

Meine SharePoint-Notizen

SharePoint-Notizen aus meiner täglichen Projektarbeit mit dem Microsoft Office SharePoint Server 2007

April 2008 - Posts

  • Bug in der SharePoint Benutzerverwaltung

    In unserem Kundenportal ist vor einigen Tagen ein bemerkenswerter Fehler aufgetreten. Nachdem wir Probleme mit einem Account bzw. dessen Profildaten hatten, haben wir diesen Account aus dem ActiveDirectory und aus der SharePoint-internen Benutzerverwaltung gelöscht und wieder unter dem gleichen Namen neu angelegt. Um zu probieren, ob dieser neu-angelegte Account wieder einwandfrei funktioniert, habe ich mich mit diesem Account an unserem Kundenportal angemeldet. Ich war verwundert, dass ich eine Fehlermeldung von unserem SharePoint Server bekam, die sinngemäß besagte, dieser Account hätte keine Rechte für die aktuelle Seite. Ich habe mich dann als Administrator angemeldet um nachzusehen, was mit dem Account nicht stimmt. In der SharePoint-Benutzerverwaltung wurde dieser Account aus allen Gruppen entfernt, in denen er zuvor Mitglied war.

    Dieses Problem mußten wir genauer untersuchen. Ich habe deswegen in einer virtuellen Umgebung mit lokalen Benutzerkonten versucht, dieses Problem nachzuvollziehen. Folgendermaßen bin ich dabei vorgegangen:

    • in der lokalen Benutzerverwaltung des Betriebssystems habe ich einen neuen Account angelegt.
    • in der SharePoint-Benutzerverwaltung habe ich diesen Account der SharePoint-Gruppe 'Mitglieder' hinzugefügt.
    • ich habe nun versucht, mich mit diesem neuen Account bei SharePoint anzumelden. Wie erwartet klappte dies problemlos!
    • zur Sicherheit habe ich mich wieder abgemeldet und das Browserfenster geschlossen.
    • in der lokalen Benutzerverwaltung habe ich nun den eben angelegten Account gelöscht
    • in der SharePoint-Benutzerverwaltung habe ich diesen Account auch gelöscht.
    • ein Anmelden mit diesem gelöschten Account schlägt nun -wie erwartet- fehl.
    • nun habe ich in der lokalen Benutzerverwaltung des Betriebssystems den zuvor gelöschten Account mit exakt den gleichen Daten wieder angelegt.
    • in SharePoint habe ich diesen neu angelegten Account wieder der SharePoint-Gruppe 'Mitglieder' hinzugefügt.
    • beim Anmelden an SharePoint mit diesem neu-angelegten Account kommt es nun wieder zu der genannten Fehlermeldung "Sie haben keine Berechtigung ...."
    • als ich mich wieder als Administrator angemeldet habe, stellt ich fest, dass der neu-angelegte Account aus der SharePoint-Gruppe 'Mitglieder' verschwunden war.

    Dies erklärt zwar die Fehlermeldung, aber warum verschwindet ein gelöschter Account, der mit den gleichen Daten wieder neu angelegt wurde, nach dem ersten Anmelden an SharePoint aus allen SharePoint-Gruppen?

    SharePoint speichert alle Accounts in einer Tabelle in der Content Database und weist diesen Accounts eine eigene ID zu. Diese ID wird sichtbar, wenn man mit der Maus auf einen Benutzernamen in der SharePoint-internen Benutzerverwaltung zeigt (also Mauszeigen nur auf den Benutzernamen schieben, nicht klicken!).

    Nachdem ein Account in SharePoint gelöscht wird, wird dieser nicht aus der User-Tabelle entfernt, sondern dort nur als gelöscht markiert. Erzeugt man nun einen neuen Account, der einem gelöschten Account exakt entspricht und fügt diesen Account einer SharePoint-Gruppe hinzu, tauchen in der User-Tabelle zwei Accounts mit dem gleichen Namen, aber unterschiedlichen IDs auf. Einer (der mit der kleineren ID) ist als gelöscht markiert, der andere mit der größeren ID ist der neu-angelegte Account. Loggt man sich nun mit einem solchen gelöscht-und-neu-angelegt Account bei SharePoint ein, kommt SharePoint offensichtlich durcheinander und verwendet die ID des gelöschten Accounts. Dies kann man sehen, wenn man sich die IDs wie oben beschrieben ansieht.

    Bevor ich mich mit diesem Fehler an den Microsoft-Support wenden wollte, wollte ich erst sichergehen, dass es sich wirklich um einen Fehler handelte. Fabian Moritz war so freundlich, mich ein wenig zu unterstützen. Er konnte mir das geschilderte Verhalten bestätigen, denn in seinem Blog-Artikel hatte er bereits Untersuchungen zur SharePoint-internen Benutzerverwaltung angestellt.

    Grundsätzlich gibt zwei Lösungsmöglichkeiten für dieses Problem - diese beiden Möglichkeiten konnte mir der Microsoft-Support im Nachhinein auch bestätigen:

    • der Person Synchronization Timer Service startet normalerweise ungefähr 1 Mal pro Stunde und sollte die Unstimmigkeiten in der Benutzerverwaltung wieder korrigieren. Bedeutet: man muß mindestens einen Timerzyklus abwarten. Der Microsoft-Support erwähnte aber auch noch, dass manchmal auch ein manueller vollständiger Profilimport nötig sei. In Ausnahmefälle müsse der vollständige Profilimport auch mehrmals durchgeführt werden. Diese Aussagen des Microsoft-Supports habe ich nicht weiter überprüft.
    • es gibt ein STSADM-Kommando, mit welchem man die Unstimmigkeiten in der SharePoint-internen Benutzerverwaltung manuell korrigieren kann: STSADM -o migrateuser <oldlogin> <newlogin> -ignoresidhistory

    Mit diesem STSADM-Kommando konnten wir unser Problem lösen. Wichtig ist aber, dass man hier den Parameter -ignoresidhistory nicht vergisst! Übrigens tritt das geschilderte Problem mit lokalen Benutzerkonten und mit Benutzerkonten in einem ActiveDirectory auf (Stichwort: Windows-Authentifizierung). Auf einer Testinstallation, die mit Forms Authication arbeitet, trat das Problem nicht auf.

    Wer sich noch ein wenig über die interne SharePoint-Benutzerverwaltung informieren möchte, findet entsprechende Informationen im Blog von Fabian Moritz in seinem Artikel über die UserInfo-Tabelle.

     

    Add to Technorati Favorites
  • Kleiner 'Bug' im Data View Webpart bei der Formatierung von Währungsangaben

    Vor ein paar Tagen sind wir auf einen Bug im Data View Webpart (bzw. auf deutsch: Datenansichtswebpart) gestossen, als wir den Inhalt einer SharePoint-Liste in einem anderen Web mithilfe des SharePoint-Designers anzeigen wollten. Ausgangsbasis war eine deutschsprachige SharePoint-Installation.

    In der ursprünglichen Liste gab es u.a. eine Spalte mit dem Namen 'Preis', die als Währung in € definiert war. Der Inhalt dieser Liste sollte mit dem Data View-Webpart auf einer Seite in einem anderen Web angezeigt werden. Dies klappte auch anfangs problemlos, nur als in der ursprünglichen Liste Preise mit Nachkommastellen (also z.B. 49,95€) auftauchten, wurde dieser Preis im Data View-Webpart nicht mehr angezeigt. An der Stelle, an der wir eigentlich 49,95€ erwartet haben, wurde nichts mehr angezeigt. Bei Preisen ohne Nachkommastellen klappt die Anzeige hingegen wie erwartet.

    Nach einigem Recherchieren und Ausprobieren sind wir zu der Erkenntnis gekommen, dass das Data View-Webpart offensichtlich ein Problem mit Punkt und Komma und länderspezifischen Einstellungen hat. Zwar wird im entsprechenden XSLT-String die deutsche LCID mit angegeben, aber trotzdem klappt die korrekte Formatierung von Währungsspalten nicht.

    Im Original sieht dieser XSLT-String folgendermaßen aus:

    <xsl:value-of select="format-number(@Preis, '€#.##0,00;-€#.##0,00', 'lcid1031')" />

    Eigentlich ist diese Formatierung richtig, denn in Deutschland werden die Nachkommastellen mit einem Komma abgetrennt. Das Problem kommt daher, dass wir auch einen deutschen SQLServer installiert haben - SharePoint aber wohl insgeheim von einem englischen SQLServer und damit von einem englischen Zahlenformat ausgeht.

    Zum Glück kann man über den XSLT-Editor des Data View-Webparts diesen String ein wenig verändern - und über diesen Weg läßt sich der beschriebene Fehler im Data View-Webpart dann auch korrigieren.

    Wir haben den XSLT-String ein wenig modifiziert:

    <xsl:value-of select="format-number(translate(@Preis,',','.'), '#.##0,00 €;-#.##0,00 €', 'lcid1031')" />

    Mit diesem String ersetzen wir vor der eigentlichen Formatierung ein Komma durch einen Punkt - und haben damit eine englischsprachige Zahlenformatierung erreicht. Dieses englischsprachige Zahlenformat kann das Data View-Webpart jetzt problemlos als deutsche Währung formatieren und ausgeben.

    Weitere Informationen zu diesem Thema finden sich in diesem MSDN-Artikel zu KB293469.

     

    Add to Technorati Favorites

Need SharePoint Training? Attend a SharePoint Bootcamp!

Posts (c) their respective authors. Everything else (c) 2007 SharePoint Experts