SharePoint 2010: Verschieben von Datenbanken zwischen Farmen mit aktiviertem Remote BLOB Storage

Bei der Konsolidierung von SharePoint-Farmen kommt es vor, dass auf der einen Farm das Remote BLOB Storage Feature installiert und aktiviert ist und auf der anderen nicht, das sorgt oft für Probleme.

Mir fallen grundsätzlich zwei Möglichkeiten ein, mit der Situation umzugehen:

Möglichkeit 1: Den BLOB zurück in die Inhaltsdatenbank schieben und die Inhaltsdatenbank dann ohne BLOB migrieren
Hier ist eine Beschreibung dazu.

Möglichkeit 2: Die Inhaltsdatenbank inklusive BLOB migrieren

Hier wird beschrieben, wie RBS installiert wird.
Die Installation von RBS auf der Zielfarm ist natürlich die Grundvoraussetzung, dass das Verschieben der Inhaltsdatenbank funktioniert.
Nach der Installation und dem Konfigurieren hat das Anhängen der Datenbank wunderbar funktioniert, alle Berechtigungen wurden mitgenommen und ich konnte Dokumente wie gewohnt öffnen.

Leider konnte ich Dokumente weder bearbeiten noch neue hochladen… Nach langer Suche habe ich festgestellt, dass auf der Zielfarm SharePoint Zielfarm Service Pack 2 installiert war und auf der Ausgangsfarm nur Service Pack 1. Nachdem ich mit

upgrade-spcontentdatabase

die Inhaltsdatenbank upgedated und RBS nochmal für diese Inhaltsdatenbank aktiviert hatte, funktionierte das Bearbeiten und hochladen von Dokumenten ohne Probleme.

SharePoint 2007 – InfoPath 2007 oder 2010

Wenn man Zugriff auf InfoPath 2007 und InfoPath 2010 hat, aber noch einen SharePoint 2007 im Einsatz hat, stellt sich die Frage, ob Formulare mit InfoPath 2007 oder InfoPath 2010 erstellt werden sollen.

Für neue Projekte würde ich immer zu InfoPath 2010 tendieren, auch im 2007 Kompatibilitätsmodus hat man die neue Oberfläche und out-of-the-box Features wie zum Beispiel den People Picker.

SharePoint 2007: Verknüpfung zwischen EditForm.aspx und Ansicht

An manchen Tagen stößt man wirklich auf sehr seltsame, zeitraubende Probleme und gesteht sich ein, dass eine echte Lösung manchmal einfach zu lange dauert:

Nachdem ich für eine Liste die EditForm.aspx im SharePoint Designer angepasst hatte, war wohl irgendwie die Verknüpfung zwischen der Ansicht und der Seite “kaputt”. Weder über das Kontextmenü, noch über die bearbeiten Spalte konnte ich die Seite aufrufen, sondern wurde auf die Rootsite der Site Collection weitergeleitet.

Die EditForm.aspx wurde weiterhin ganz normal von der DisplayForm.aspx angesteuert. Das Problem war, dass aus der Ansicht nicht “http://site/subsite/lists/list/EditForm.aspx?ID=2″ angesteuert wurde, sondern “http://site?ID=2″.

Nachdem mich das Ganze schon recht viel Zeit und Nerven gekostet hatte, habe ich die Liste einfach neu erstellt und gehofft, dass das Problem nicht mehr auftritt – mit Erfolg -.

Verschwundene MySites in SharePoint 2007

Man merkt ja immer erst so richtig ob Features genutzt werden, wenn sie nicht mehr da sind. MySites werden unheimlich gern genutzt und Benutzer merken es sehr schnell, wenn sie nicht mehr da sind.

Was ist passiert?

Der Host der MySites wurde gelöscht, Benutzer bekommen beim Klick auf Meine Webseite eine 404 Fehlermeldung, der direkte Link funktioniert noch.

Die Lösung

Den Host also die Rootsite wieder anlegen hat bei mir das Problem gelöst.

Hier gibts die genaue Beschreibung des Problems und der Lösung. (Danke Jerry_Orman)

Buchtipp: The Art of Readable Code

Hier noch ein Buchtipp für alle, die noch nicht wissen, was sie mit ihren Amazon-Gutscheinen machen sollen: The Art of Readable Code von Dustin Boswell und Trevor Foucher.

Das Buch beschäftigt sich wie der Name erahnen lässt mit lesbarem Code. Ich fand es recht kurzweilig und gut geschrieben und konnte einige Tipps mitnehmen, den ich zukünftig in meine Arbeit einfließen lassen möchte.

gelernt: Unobtrusive JavaScript

Heute bin ich über den Begriff “Unobtrusive JavaScript” also “unaufdringliches JavaScript” gestoßen:

Hier die Grundprinzipien (aus Wikipedia)

  • Abgrenzung von Inhalt, Verhalten und Präsentation von Webseiten (Model View Controller)
  • Verwendung von Best Practices, um Probleme herkömmlicher JavaScript-Programmierung zu vermeiden
  • JavaScript als Erweiterung des Funktionsumfangs, nicht als Voraussetzung

JavaScript dokumentieren: ScriptDoc

Ich beschäftige mich in letzter Zeit etwas ausführlicher mit JavaScript (besonders mit jQuery und SPServices).

Bisher sind sie Sachen, die ich gemacht habe, recht überschaubar, daher habe ich mir um eine einheitliche Dokumentation relativ wenig Gedanken gemacht…

Glücklicherweise gibt es auch hier schon so etwas wie einen Standard: ScriptDoc

/**
* Kommentar zur leerer Funktion “nonsense”
* @param {String} pTest
*/
function nonsense(pTest) {

}

SharePoint Kalender Feld Arbeitsbereich ausblenden

Mithilfe des Feldes “Arbeitsbereich” können sich Benutzer beim anlegen eines neuen Ereignisses gleich eine eigene Seite dazu anlegen lassen.

Sollte der Benutzer allerdings nicht die Berechtigung haben (was meist seinen Grund hat), neue Seiten anzulegen, erscheint dann eine unschöne Fehlermeldung. Über die GUI habe zumindest ich keine Möglichkeit gefunden das Feld auszublenden.

Richard Willis beschreibt in seinem Blog, wie das Feld mithilfe eines PowerShell-Skripts auf Site Collection Ebene ausgeblendet werden kann:

http://blog.salamandersoft.co.uk/index.php/2011/03/removing-the-use-a-meeting-workspace-option-from-all-existing-and-new-sharepoint-calendars-in-a-site-collection/

Der Trick hierbei ist die “FieldLinks”-Eigenschaft und nicht das gewohnte “Fields” anzusprechen.

Visual Studio: Pflichtfelder in Workflow-Startformularen

Kurzer Tipp, da diese Frage relativ oft auftaucht:

(wir befinden uns innerhalb des angelegten Projektes auf der entsprechenden *.aspx-Seite)

In Visual Studio gibt es in der Toolbox den Abschnitt “Validierung”, dort findet man den “RequiredFieldValidator”:

Hier muss nur noch die ID des entsprechenden Eingabeelements angegeben werden und der User erhält die gewünschte Fehlermeldung, sollte das Element beim Start des Workflows nicht ausgefüllt sein.

<asp:<asp:RequiredFieldValidator ID=”RequiredFieldValidator1″ ControlToValidate=”ElementID” runat=”server” ErrorMessage=”gewünschte Fehlermeldung”></asp:RequiredFieldValidator>