SQL Server Management Studio „.NET Framework Error“ (Unable to read the list of previously registered servers on this system)

Problem

Das SQL Management Studio (alle Versionen ab 2008) startet nicht nur noch mit einer Fehlermeldung:

Microsoft.SqlServer.Management.RegisteredServers.RegisteredServerException: Unable to read the list of previously registered servers on this system.
Re-register your servers in the 'Registered Servers' window.
Microsoft.SqlServer.Management.Sdk.Sfc.SfcSerializationException:
Deserialization operation on /RegisteredServersStore/ServerGroup/CentralManagementServerGroup has failed.

Wenn das SQL Server Management Studio dann aber gestartet ist, kann man sich zwar verbinden, sieht aber keine Inhalte. Stattdessen erscheint der Fehler

Value cannot be null.

Oder auf Deutschen Systemen:

Wert darf nicht null sein.

Lösung

Das Temp-Verzeichnis der %TEMP% Variable ist nicht gesetzt, der Paf existiert nicht oder ist nicht beschreibbar. Auf dem System auf dem ich mich grade herumtreibe konnte ich den Fehler daher schnell beheben:

mkdir %TEMP%

Office 2013 auf Office365 offline herunterladen/installieren oder im Netzwerk verteilen

OfficeSetupDas Setup für die Office 2013 Programme aus Office 365 (die Clickstream-Installation) ist sehr einfach erledigt und bei einer schnellen Internetverbindung in relativ kurzer Zeit passiert.

Wie aber installiert man mehrere Computer in einem Netzwerk? Oder einen PC mit langsamer Internetanbindung? Microsoft hat diesen Fall immerhin vorgesehen, wenn auch nicht unbedingt einfach zugänglich gemacht. Es wäre ja auch VIEL zu einfach, wenn ein Admin das Officepaket herunterladen und direkt installieren könnte *kopfschüttel*. wie auch immer, so funktioniert die Office 365 Netzwerkverteilung (neudeutsch ‚On Premise deployment‘).

Lösung

  1. Das „Office Deployment Tool for Click-to-Run“ herunterladen und den Inhalt der Datei mit 7Zip auf den deployment UNC-Netzwerkshare (\\server\foobar) auspacken. Eine Installation ist NICHT notwendig.
  2. Die configuration.xml wie folgt bearbeiten:
    <Configuration>
     <Add SourcePath="\\server\foobar\ordner\" OfficeClientEdition="32" >
     <Product ID="O365ProPlusRetail">
     <Language ID="de-de" />
     <ExcludeApp ID="InfoPath" />
     </Product>
     </Add>
     <Updates Enabled="TRUE" UpdatePath="\\dcw1\install$\office365\" />
     <Display Level="None" AcceptEULA="TRUE" />
    </Configuration>

    Es ist hier auch möglich, das Setup noch weiter anzupassen:

    1. Office-Apps von der Installation ausnehmen
    2. Office-Apps hinzufügen (Visio, Project …)
    3. Setup-Optionen (EULA, Logging …)
  3. Das Setup zum Herunterladen der Office-Click-to-Run Setupdateien auffordern (das Paket ist etwa 1.4gb groß):
    setup.exe /download <pfad>\configuration.xml
  4. Aus diesen Ordner kann man dann das Officepaket nun lokal im Netzwerk installieren:
    setup.exe /configure <pfad>\configuration.xml

Wird das Setup mit „/download“ aufgerufen, werden die Dateien auf der Netzwerkfreigabe (oder dem lokalen Laufwerk) gespeichert. Wenn das Setup dann zum Installieren mit „/configure configuration.xml“ gestartet wird, holt der Installer die notwendigen Dateien ebenfalls vom selben Ort ab. Mehr Details zu dem Tool gibt es bei Microsoft unter http://technet.microsoft.com/en-us/library/jj219422.aspx.

Der Webdesigner sagt nein. Können Sie das stattdessen?

marketingfrau-quad-facepalmMarketingabteilung eines KMU Kunden.

Marketingfachfrau: „Haben Sie [admin] einen Moment Zeit? Ich habe schon mit den Internetfuzzies [kompetente Webagentur] gesprochen, aber die sagen die könnten das nicht“.

admin (schon skeptisch): „Ich kann ja mal schauen … worum geht es denn?“

Marketingfachfrau: „Ich habe den Laden in [Franchise-Standort] online angeschaut und das sieht FURCHTBAR aus. Können das schnell austauschen? So einen häßlichen Eindruck wollen wir nicht machen.“

admin, verwundert weil es keine eigenen Franchise-Webseiten gibt: „Äh, hmm, ok, können Sie mir das kurz zeigen?“

Marketingfachfrau „Na klar!“ und klickt die Straßenansicht mit dem Ladenlokal in Google-Streetview an …

Eine bestehende Thin Provisioned Virtual Disk (VMDK) verkleinern

VMware Thin Provisioned VMDKs sind ja mittlerweile weder ein Performanceproblem noch eine VCDX Design-Unschicklichkeit, sondern ganz im Gegenteil in vielen produktiven Systemen zu finden. Vor allem temporäre Datenbankexplosionen (Temp Bulk-Inserts oder Exports) lassen sich damit ausgezeichnet vor der teuren Belegung von Produktivstorage abfedern. TEMP-Volumes die zwar in der Regel klein, aber im Notfall dann größer sein müssen sind schon fast „Thin-Standard“.

Oft wird uns die Frage gestellt, wie man eine Thin-Disk, nachdem diese temporär mit Daten belegt worden ist, wieder kleiner bekommt. Die VMDK wächst ja bekanntlich mit, verkleinert sich aber selbstständig nicht. Wie verkleinert man VMDKs?

Lösung

Die entsprechende Partition muss für optimale Ergebnisse erst defragmentiert werden und der freie Speicher dann mit Nullen gefüllt sein. Diese werden von den VMKFSTOOLS dann als solche erkannt. Betriebssystme Nullen ihren Speicher aus performancegründen praktisch nie, daher muss das forciert werden. geht aber recht schnell.

    1. Windows: SDelete herunterladen und mit
      sdelete.exe -z <Laufwerk>

      den verbliebenen Restspeicher nullen.

    2. Linux: Den Platz nullen mit dd:
      dd bs=1M count=8192 if=/dev/zero of=zero
    3. VM ausschalten (oder VMDK disconnecten)
    4. Via SSH auf einen Host verbinden
    5. Disk verkleinern mit
      vmkfstools -K [/vmfs/volumes/lun178/mydisk.vmdk]

Exchange 2010: „Diese Postfachdatenbank enthält mindestens ein Postfach, einen Postfachplan, ein Archivpostfach oder ein Vermittlungspostfach …“

Problem

Eine Exchange 2010 Datenbank lässt sich nach einer Migration auf einen anderen Server (2010 odr 2013) nicht löschen. Es erscheint bei jemden Versuch folgende Fehlermeldung:

Die Postfachdatenbank  kann nicht gelöscht werden.

<Mailbox Database Name>
Fehler: Diese Postfachdatenbank enthält mindestens ein Postfach, einen Postfachplan, ein
Archivpostfach oder ein Vermittlungspostfach. Führen Sie den Befehl ‘Get-Mailbox -Database
<Database ID>’ aus, um eine Liste aller Postfächer in der Datenbank abzurufen. Führen
Sie den Befehl ‘Get-MailboxPlan’ aus, um eine Liste aller Postfachpläne in dieser
Datenbank abzurufen. Führen Sie den Befehl ‘Get-Mailbox -Database <Database ID>
-Archive’ aus, um eine Liste mit Archivpostfächern in dieser Datenbank abzurufen. Führen
Sie den Befehl ‘Get-Mailbox -Database <Database ID> -Arbitration’ aus, um eine Liste
aller Vermittlungspostfächer in dieser Datenbank abzurufen. Wenn Sie ein Postfach, bei dem
es sich nicht um ein Vermittlungspostfach handelt, deaktivieren möchten, um die
Postfachdatenbank löschen zu können, führen Sie den Befehl ‘Disable-Mailbox <Mailbox
ID> aus. [....]

Lösung

Es gibt einige System-Postfächer, die in einer Liste aus „get-mailbox“ nicht auftauchen. Das sind – in den meisten Fällen – das Systempostfach und das Organisations-Postfach „FederatedEmail“. Diese Postfächer werden aber auch in der ManagementConsole nicht (mehr) angezeigt.

Die Namen der Postfachdatenbanken liefert die Exchange-PowerShell mit:

Get-MailboxDatabase

Daraus kann man dann jeweils die betroffenen Postfächer anzeigen um sie zu verschieben (nein, pipen ist mit Arbitration nicht möglich, man muss kopieren+einfügen):

Get-Mailbox -Database "AlteDatenbank" -Arbitration | Select-Object Name | fl

Dann kann man diese einzeln verschieben:

New-MoveRequest -Identity "FederatedEmail.4c4c4c4foobar" -TargetDatabase "NeueDatenbank"