August 2008 August 2008
SQL Server: Die besten Tipps für effektive Datenbankwartung
Viel zu oft sind Personen, die keine ausgebildeten Datenbankadministratoren sind, aus irgendeinem Grund für eine Datenbank verantwortlich. Ihnen fehlt es an der richtigen Schulung und den entsprechenden Kenntnissen zum Warten ihrer Datenbank, was bald zu Problemen führt. Dies ist eine Einführung für alle unfreiwilligen DBAs, die einen Intensivkurs bezüglich der bewährten Methoden der Datenbankwartung benötigen. Paul S. Randal
Windows-Verwaltung: Fühlen Sie den Puls Ihres Servers
Ihre Benutzer beschweren sich darüber, dass die Leistung eines Servers sehr zu wünschen übrig lässt. Wissen Sie, wo Sie ansetzen müssen, um das Problem zu analysieren? PerfMon kann ein unverzichtbares Tool für diese Aufgabe sein, da es über zahlreiche Diagnosefunktionen verfügt. Verschaffen Sie sich einen Überblick über die wichtigsten Indikatoren, die Sie verwenden sollten, um verschiedene häufig auftretende Engpässe zu analysieren, die Ihre Server verlangsamen können. Steven Choy
System Center: Windows PowerShell in System Center Operations Manager
Windows PowerShell wurde in System Center Operations Manager 2007 integriert und bietet eine leistungsfähige Methode für die Durchführung und Automatisierung häufiger administrativer Aufgaben. In diesem Artikel erhalten Sie einen Überblick darüber, wie Sie in OpsMgr mithilfe von Windows PowerShell die Routinewartung ausführen, Agents verwalten und weitere Aufgaben erledigen können. Marco Shaw
Internetinformationsdienste: Skalieren von ASP.NET-Anwendungen: Gewonnene Erfahrungen
Der Schlüssel zum erfolgreichen Skalieren einer ASP.NET-Anwendung sind gemeinsame Bemühungen von Entwicklern und Netzwerkmitarbeitern gleich zu Beginn des Lebenszyklus einer Anwendung. Erfahren Sie, welche Faktoren für die Skalierung einer Anwendung notwendig sind und wie diese Zusammenarbeit dabei helfen kann sicherzustellen, dass die Anwendung wie beabsichtigt ausgeführt wird. Richard Campbell
Columns
Mitteilung der Redaktion: Live von der Tech•Ed: | Briefe: Leser sagen ihre Meinung: | Toolbox: Neue Produkte für IT-Experten:
SQL – Fragen und Antworten: Partitionierung, Konsistenzprüfungen und mehr: Paul Randal beantwortet Ihre Fragen zu SQL Server. Er zeigt Ihnen unter anderem, wie Sie Konsistenzprüfungen und andere Wartungsaufgaben bei sehr großen Datenbanken durchführen können und wie Sie nach einer versehentlichen Aktualisierung vorgehen sollten.Paul S. Randal | Schwerpunkt Dienstprogramme: Das Dienstprogramm „Windows Installer CleanUp“: Verbliebene Windows Installer-Konfigurationsinformationen können Probleme verursachen, wenn Sie versuchen, eine Anwendung zu aktualisieren oder zu deinstallieren. Sie können das Problem beheben, indem Sie das Dienstprogramm „Windows Installer CleanUp“ verwenden, mit dem Sie die Windows Installer-Informationen einer Anwendung entfernen und die Anwendung dann neu installieren können.Lance Whitney | Inside SharePoint: Problembehandlung bei der Messagingintegration: Die Integration von SharePoint in eine sichere Messagingumgebung ist keine einfache Aufgabe, wirkt sich aber positiv auf die Produktivität aus und ist der Mühe wert. Hier finden Sie einen Leitfaden zur Problembehandlung beim Einrichten der Umgebung.Pav Cherny
Windows PowerShell: Eine Vorschau auf die Remoteverwaltung in Version 2.0: Windows PowerShell 2.0 ist in Arbeit, und die aktuelle CTP-Version bietet einige großartige neue Funktionen. Hier erfahren Sie einiges über Remoting, eines der interessantesten neuen Features, die Sie in Windows PowerShell 2.0 CTP2 finden werden.Don Jones | Hey, Scripting Guy!: Auf der Schnellstraße: Ab Windows Vista ist das ActiveX-Steuerelement „UserAccounts.CommonDialog“ für das Öffnen eines Dialogfelds zum Öffnen von Dateien nicht mehr vorhanden. In diesem Artikel wird beschrieben, wie Sie dieses Problem mithilfe von Visual Basic Express Edition lösen können.Die Scripting Guys von Microsoft | Die Desktopdateien: Die Windows-Bereitstellungsdienste: Untersuchen Sie die verschiedenen Versionen der Windows-Bereitstellungsdienste (Windows Deployment Services, WDS), erfahren Sie, wie Sie ein benutzerdefiniertes Betriebssystemabbild aufzeichnen können, und finden Sie heraus, was Sie für die Durchführung stärker automatisierter Installationen benötigen.Wes Miller
Sicherheit auf dem Prüfstand: Kennwörter und Kreditkarten, Teil 2: Im zweiten Teil dieser dreiteiligen Reihe befasst sich Jesper Johansson damit, wie Softwarehersteller, Sicherheitssuites und Marketingbestrebungen echte Sicherheitsbestrebungen unterminieren, und warnt uns davor, wie diese Methoden zum Zusammenbruch des Ökosystems der Technologiesicherheit führen können.Jesper M. Johansson | Nachhaltige Computernutzung: Filtern der Grünfärberei: Das Durchschauen Ihres Energieverbrauchs ist heute ein wesentlicher Bestandteil der Verwaltung einer IT-Infrastruktur. Erfahren Sie mehr über die Strategien, die Sie einsetzen können, um in Ihrer Umgebung Energieüberwachung zu implementieren, um dadurch den Energieverbrauch von Geräten innerhalb Ihres Unternehmens besser zu verstehen.Dave Ohara | Berichte aus der Praxis: IMAP rettet die Welt: Haben Sie E-Mail-Nachrichten an vielen verschiedenen Speicherorten in verschiedenen Formaten und unter verschiedenen Betriebssystemen gespeichert? Dara Korra'ti erklärt, wie Sie mithilfe von IMAP4 von einem einzigen Ort aus auf alle Ihre E-Mail-Nachrichten zugreifen können.R'ykandar Korra'ti
Windows Confidential: Auf der Vergangenheit aufbauen: Raymond Chen erklärt, wie das einstmals leistungsfähige Alpha AXP-System aus dem Ruhestand geholt wurde und zur Entwicklung einer neuen Generation von 64-Bit-Systemen beitrug.Raymond Chen


SQL Server
Die besten Tipps für effektive Datenbankwartung
Paul S. Randal
Auf einen Blick:
  • Verwalten von Daten- und Transaktionsprotokolldateien
  • Beseitigen der Indexfragmentierung
  • Gewährleisten korrekter, aktueller Statistiken
  • Erkennen beschädigter Datenbankseiten
  • Festlegen einer effektiven Sicherungsstrategie

Inhalt
Daten- und Protokolldateiverwaltung
Indexfragmentierung
Erkennen von Beschädigungen

Mehrmals pro Woche werde ich um Rat gefragt, wie eine Produktionsdatenbank effektiv gewartet werden kann. Manchmal kommen die Fragen von DBAs, die neue Lösungen implementieren und
bei der Feinabstimmung der Wartungsmethoden Hilfe benötigen, damit sie den Eigenschaften ihrer neuen Datenbanken entsprechen. Häufiger stammen die Fragen jedoch von Personen, die nicht von Berufs wegen DBAs sind, sich aber aus irgendeinem Grund um eine Datenbank kümmern und für sie verantwortlich sind. Ich bezeichne diese Rolle gerne als „unfreiwilliger DBA“. Schwerpunkt dieses Artikels ist eine Einführung in die bewährten Methoden der Datenbankwartung für alle unfreiwilligen DBAs.
Wie bei der Mehrzahl von Aufgaben und Verfahren in der IT-Welt gibt es keine einfache Standardlösung für die effektive Datenbankwartung, aber es gibt einige Hauptbereiche, die fast immer angesprochen werden müssen. Die wichtigsten fünf Bereiche sind für mich folgende (sie sind nicht nach Wichtigkeit sortiert):
  • Daten- und Protokolldateiverwaltung
  • Indexfragmentierung
  • Statistiken
  • Erkennen von Beschädigungen
  • Sicherungen
Bei einer nicht (oder schlecht) gewarteten Datenbank können in einem oder mehreren dieser Bereiche Probleme entstehen, die schließlich zu schlechter Anwendungsleistung oder sogar Ausfallzeiten und Datenverlust führen können.
In diesem Artikel wird erläutert, warum diese Themen wichtig sind, und Sie erfahren, wie sie sich auf einfache Weise verringern lassen. Meine Erklärungen basieren auf SQL Server® 2005, aber es werden auch die Hauptunterschiede zu SQL Server 2000 sowie SQL Server 2008, dessen Veröffentlichung bevorsteht, beschrieben.

Daten- und Protokolldateiverwaltung
Der erste Bereich, dessen Überprüfung bei der Übernahme einer Datenbank immer empfehlenswert ist, betrifft Einstellungen im Zusammenhang mit der Daten- und (Transaktions-) Protokolldateiverwaltung. Insbesondere sollten Sie Folgendes sicherstellen:
  • Die Daten- und Protokolldateien sind von einander getrennt und auch von allem anderen isoliert
  • Automatische Vergrößerung ist richtig konfiguriert
  • Sofortige Dateiinitialisierung ist konfiguriert
  • Automatische Verkleinerung ist nicht aktiviert, und die Verkleinerung ist nicht Bestandteil eines Wartungsplans
Wenn Daten- und Protokolldateien (die im Idealfall sowieso auf separaten Volumes gespeichert sein sollten) ein Volume gemeinsam mit einer anderen Anwendung nutzen, die Dateien erstellt oder erweitert, besteht die Möglichkeit der Dateifragmentierung. In Datendateien kann übermäßige Dateifragmentierung zu Abfragen mit schlechter Leistung beitragen (v. a. bei Abfragen, die sehr große Datenmengen durchsuchen). In Protokolldateien kann dies weitaus größere Auswirkungen auf die Leistung haben, insbesondere wenn die automatische Vergrößerung die Dateigröße jedes Mal, wenn die Datei gebraucht wird, nur geringfügig erhöht.
Protokolldateien sind intern in Abschnitte unterteilt, die als virtuelle Protokolldateien (Virtual Log Files, VLFs) bezeichnet werden. Je stärker die Protokolldatei fragmentiert ist, desto mehr VLFs sind vorhanden (ich spreche hier absichtlich von nur einer Datei, da es nicht sinnvoll ist, mehrere Protokolldateien zu haben – es sollte nur eine pro Datenbank vorhanden sein). Wenn eine Protokolldatei mehr als etwa 200 VLFs hat, kann sich dies negativ auf protokollbezogene Vorgänge wie beispielsweise Protokolllesevorgänge (z. B. bei der Transaktionsreplikation/Rollback), Protokollsicherungen und sogar Trigger in SQL Server 2000 auswirken (das Implementieren von Triggern wurde in SQL Server 2005 zum Zeilenversionsverwaltungsframework anstelle des Transaktionsprotokolls geändert).
Die bewährte Methode hinsichtlich der Größenanpassung von Daten- und Protokolldateien besteht in ihrer Erstellung mit einer angemessenen Anfangsgröße. Bei Datendateien sollte die anfängliche Größe kurzfristig das Potenzial für das Hinzufügen zusätzlicher Daten zur Datenbank berücksichtigen. Wenn die anfängliche Größe der Daten beispielsweise 50 GB beträgt, aber bekannt ist, dass in den nächsten sechs Monaten zusätzlich 50 GB Daten hinzugefügt werden, ist es angebracht, die Datendatei von Anfang an mit einer Größe von 100 GB zu erstellen, statt sie mehrmals vergrößern zu müssen, bis sie diese Größe erreicht.
Bei Protokolldateien ist das Ganze leider ein wenig komplizierter, und es müssen beispielsweise folgende Faktoren berücksichtigt werden: die Transaktionsgröße (Transaktionen mit langer Laufzeit können erst nach ihrem Abschluss gelöscht werden) und die Häufigkeit der Protokollsicherung (da dadurch der inaktive Teil des Protokolls entfernt wird). Weitere Informationen finden Sie unter „8 Steps to Better Transaction Log Throughput“. Dabei handelt es sich um einen beliebten Blogbeitrag bei SQLskills.com, der von meiner Frau, Kimberly Tripp, geschrieben wird.
Nach ihrer Einrichtung sollten die Dateigrößen zu verschiedenen Zeiten überwacht und proaktiv manuell zu einer geeigneten Tageszeit vergrößert werden. Die automatische Vergrößerung sollte als Schutz für alle Fälle aktiviert bleiben, sodass Dateien bei Bedarf noch vergrößert werden können, falls ein ungewöhnliches Ereignis eintritt. Die Tatsache, dass die automatische Vergrößerung kleiner Mengen zur Dateifragmentierung führt, spricht dagegen, die Dateiverwaltung ganz der automatischen Vergrößerung zu überlassen. Zudem kann die automatische Vergrößerung ein zeitaufwändiger Prozess sein, der die Arbeit der Anwendung zu nicht vorhersehbaren Zeiten verzögert.
Die Größe für die automatische Vergrößerung sollte auf einen bestimmten Wert statt auf einen Prozentsatz eingestellt werden, um die beim Durchführen der automatischen Vergrößerung erforderliche Zeit sowie den benötigten Speicher zu begrenzen. Eine 100-GB-Datei könnte beispielsweise auf eine feststehende automatische Vergrößerung von 5 GB statt auf 10 Prozent eingestellt werden. Dies bedeutet, dass sie immer um 5 GB vergrößert wird, egal, wie groß die Datei schließlich ist, statt jedes Mal um eine immer größer werdende Menge (10 GB, 11 GB, 12 GB usw.) vergrößert zu werden, wenn die Datei wächst.
Wenn ein Transaktionsprotokoll (manuell oder automatisch) vergrößert wird, erfolgt die Initialisierung immer ab null. Datendateien haben dasselbe Standardverhalten in SQL Server 2000, aber seit SQL Server 2005 kann die sofortige Dateiinitialisierung aktiviert werden, die die Nullinitialisierung der Dateien überspringt, sodass die Vergrößerung und automatische Vergrößerung praktisch unmittelbar erfolgen. Entgegen der allgemeinen Auffassung ist dieses Feature in allen Editionen von SQL Server verfügbar. Um weitere Informationen zu erhalten, geben Sie „sofortige Dateiinitialisierung“ in den Index der Onlinedokumentation von SQL Server 2005 oder SQL Server 2008 ein.
Schließlich sollte darauf geachtet werden, dass die Verkleinerung keinesfalls aktiviert wird. Mithilfe der Verkleinerung kann die Größe einer Daten- oder Protokolldatei verringert werden, aber es ist ein sehr tiefgreifender Prozess, der viele Ressourcen beansprucht und sehr große Mengen an logischer Scanfragmentierung in Datendateien verursacht (weiter unten finden Sie weitere Informationen) und zu schlechter Leistung führt. Ich habe den SQL Server 2005-Eintrag in der Onlinedokumentation zum Thema Verkleinerung geändert, sodass er nun diesbezüglich eine Warnung enthält. Das manuelle Verkleinern einzelner Daten- und Protokolldateien ist jedoch unter bestimmten Umständen akzeptabel.
Video
Paul Randal zeigt, wie die Verkleinerung und automatische Verkleinerung ernste Fragmentierungsprobleme bei Ihrer Datenbank verursachen können.

Die automatische Verkleinerung ist der größte Übeltäter, da sie alle 30 Minuten im Hintergrund startet und versucht, Datenbanken zu verkleinern, wenn die Option für die automatische Verkleinerung von Datenbanken auf „true“ gesetzt ist. Es ist ein ziemlich unvorhersehbarer Prozess, da er nur Datenbanken mit mehr als 25 Prozent freiem Speicherplatz verkleinert. Für die automatische Verkleinerung sind viele Ressourcen erforderlich, und sie verursacht eine Fragmentierung, die die Leistung senkt. Aus diesem Grund sollte davon abgesehen werden. Die automatische Verkleinerung sollte immer wie folgt ausgeschaltet werden:
ALTER DATABASE MyDatabase SET AUTO_SHRINK OFF;
Ein regelmäßiger Wartungsplan, der einen Befehl zum manuellen Verkleinern der Datenbank enthält, ist fast genauso schlecht. Wenn Sie feststellen, dass Ihre Datenbank fortwährend größer wird, nachdem sie gemäß Wartungsplan verkleinert wurde, ist dies darauf zurückzuführen, dass dieser Speicherplatz zum Ausführen der Datenbank erforderlich ist.
Es ist am besten, wenn die Datenbank auf eine stabile Zustandsgröße anwächst und grundsätzlich keine Verkleinerung durchgeführt wird. Weitere Informationen zu den Nachteilen der Verkleinerung sowie einige Kommentare zu den neuen Algorithmen in SQL Server 2005 finden Sie in meinem alten MSDN®-Blog unter blogs.msdn.com/sqlserverstorageengine/archive/tags/Shrink/default.aspx.

Indexfragmentierung
Neben der Fragmentierung auf Dateisystemebene und innerhalb der Protokolldatei ist es auch möglich, die Fragmentierung innerhalb der Datendateien durchzuführen, d. h. in den Strukturen, die die Tabellen- und Indexdaten speichern. Es gibt zwei grundlegende Arten der Fragmentierung, die innerhalb einer Datendatei stattfinden können:
  • Fragmentierung innerhalb einzelner Daten- und Indexseiten (bisweilen als interne Fragmentierung bezeichnet)
  • Fragmentierung innerhalb von Index- oder Tabellenstrukturen, die aus Seiten bestehen (bezeichnet als logische Scanfragmentierung und Blockscanfragmentierung)
Die interne Fragmentierung findet dort statt, wo viel leerer Speicherplatz auf einer Seite vorhanden ist. Wie in Abbildung 1 gezeigt, hat jede Seite in einer Datenbank eine Größe von 8 KB und einen 96-Byte-Seitenheader. Demzufolge kann eine Seite ungefähr 8096 Byte an Tabellen- oder Indexdaten speichern (bestimmte Tabellen- und Indexinterna für Daten- und Zeilenstrukturen sind in meinem Blog unter sqlskills.com/blogs/paul in der Kategorie „Inside The Storage Engine“ enthalten). Leerer Speicherplatz kann vorhanden sein, wenn jeder Tabellen- oder Indexdatensatz mehr als die Hälfte der Seitengröße einnimmt, da dann nur ein einziger Datensatz pro Seite gespeichert werden kann. Dies lässt sich nur sehr schwer oder gar nicht korrigieren, da dazu eine Tabellen- oder Indexschemaänderung erforderlich wäre, beispielsweise durch Ändern eines Indexschlüssels, sodass dieser keine zufälligen Einfügepunkte verursacht, wie dies bei einer GUID der Fall ist.
Abbildung 1 Die Struktur einer Datenbankseite (zum Vergrößern auf das Bild klicken)
Häufiger ist die interne Fragmentierung das Ergebnis von Datenänderungen wie beispielsweise Einfügungen, Aktualisierungen und Löschungen, die zu leerem Speicherplatz auf einer Seite führen können. Ein schlecht verwalteter Füllfaktor kann ebenfalls zur Fragmentierung beitragen. Die Onlinedokumentation enthält weitere Informationen dazu. In Abhängigkeit vom Tabellen-/Indexschema und den Eigenschaften der Anwendung kann dieser leere Speicherplatz nie wieder verwendet werden, nachdem er erstellt wurde, was zu ständig zunehmenden Mengen an unbrauchbarem Speicherplatz in der Datenbank führen kann.
Angenommen, Sie hätten eine Tabelle mit 100 Millionen Zeilen mit einer durchschnittlichen Datensatzgröße von 400 Byte. Im Laufe der Zeit hat jede Seite aufgrund des Datenänderungsmusters der Anwendung durchschnittlich 2800 Byte freien Speicherplatz. Der für die Tabelle erforderliche Gesamtspeicherplatz beträgt etwa 59 GB, der wie folgt berechnet wird: 8096-2800 / 400 = 13 Datensätze pro 8 KB-Seite. Anschließend wird 100 Millionen durch 13 geteilt, um die Anzahl der Seiten zu erhalten. Wenn der Speicherplatz nicht verschwendet würde, würden 20 Datensätze auf jede Seite passen, was den gesamten erforderlichen Speicherplatz auf 38 GB verringern würde. Das wäre eine große Einsparung!
Verschwendeter Speicherplatz auf Daten-/Indexseiten kann daher zu einem höheren Bedarf an Seiten führen, die dieselbe Datenmenge enthalten. Dies erfordert nicht nur mehr Festplattenspeicher, sondern bedeutet auch, dass eine Abfrage mehr E/As ausgeben muss, um dieselbe Datenmenge zu lesen. Alle diese zusätzlichen Seiten nehmen mehr Platz im Datencache und damit mehr Serverspeicher ein.
Die logische Scanfragmentierung wird durch einen als Seitenteilung bezeichneten Vorgang verursacht. Dazu kommt es, wenn ein Datensatz (gemäß der Indexschlüsseldefinition) auf einer bestimmten Indexseite eingefügt werden muss, aber auf der Seite nicht genug freier Speicherplatz vorhanden ist, um die eingefügten Daten aufzunehmen. Die Seite wird halbiert, und ungefähr 50 Prozent der Datensätze werden auf eine neu zugeordnete Seite verschoben. Diese neue Seite hängt normalerweise nicht physisch mit der alten Seite zusammen und wird daher als fragmentierte Seite bezeichnet. Die Blockscanfragmentierung ist vom Konzept her ähnlich. Die Fragmentierung innerhalb der Tabellen-/Indexstrukturen wirkt sich auf die Fähigkeit von SQL Server aus, effiziente Scans durchzuführen, sei es in einer gesamten Tabelle bzw. einem Index oder begrenzt durch eine WHERE-Abfrageklausel (z. B. SELECT * FROM MyTable WHERE Column1 > 100 AND Column1 < 4000).
Abbildung 2 zeigt neu erstellte Indexseiten mit 100 Prozent Füllfaktor und ohne Fragmentierung. Die Seiten sind voll, und die physische Reihenfolge der Seiten entspricht der logischen Reihenfolge. Abbildung 3 zeigt die Fragmentierung, die nach zufälligen Einfügungen/Aktualisierungen/Löschungen eintreten kann.
Abbildung 2 Neu erstellte Indexseiten ohne Fragmentierung; die Seiten sind 100 % voll (zum Vergrößern auf das Bild klicken)
Abbildung 3 Indexseiten, die nach zufälligen Einfügungen, Aktualisierungen und Löschungen interne und logische Scanfragmentierung aufweisen (zum Vergrößern auf das Bild klicken)
Die Fragmentierung kann bisweilen verhindert werden, indem das Tabellen-/Indexschema verändert wird, aber wie oben bereits erwähnt, kann dies sehr schwierig oder unmöglich sein. Wenn das Verhindern keine Option ist, gibt es Möglichkeiten zum Entfernen der Fragmentierung, nachdem sie eingetreten ist, insbesondere beim Neuerstellen oder Neuorganisieren eines Index.
Beim Neuerstellen eines Index muss eine neue Kopie des Index – schön komprimiert und so zusammenhängend wie möglich – erstellt und der alte, fragmentierte Index gelöscht werden. Da SQL Server eine neue Kopie des Index erstellt, bevor der alte Index entfernt wird, ist freier Speicherplatz in den Datendateien erforderlich, der ungefähr der Größe des Index entspricht. In SQL Server 2000 war das Neuerstellen eines Index immer ein Offlinevorgang. In SQL Server 2005 Enterprise Edition kann das Neuerstellen des Index mit einigen Einschränkungen jedoch online erfolgen. Für die Neuorganisation andererseits wird ein direkter Algorithmus zum Komprimieren und Defragmentieren des Index verwendet. Zum Ausführen sind nur 8 KB zusätzlicher Speicherplatz erforderlich, und die Ausführung erfolgt immer online. Tatsächlich habe ich in SQL Server 2000 den Code für die Indexneuorganisation speziell als platzsparende Onlinealternative zum Neuerstellen eines Index geschrieben.
Die zu untersuchenden Befehle in SQL Server 2005 sind ALTER INDEX … REBUILD zum Neuerstellen von Indizes und ALTER INDEX … REORGANIZE, um sie neu zu organisieren. Diese Syntax ersetzt die SQL Server 2000-Befehle DBCC DBREINDEX bzw. DBCC INDEXDEFRAG.
Es gibt viele Kompromisse zwischen diesen Methoden, wie beispielsweise die Menge der generierten Transaktionsprotokollierung, die Menge des freien Speicherplatzes in der gewünschten Datenbank sowie die Frage, ob der Prozess ohne Arbeitsverlust unterbrochen werden kann. Ein Whitepaper, das diese Kompromisse erörtert und weitere Informationen enthält, finden Sie unter microsoft.com/technet/prodtechnol/sql/2000/maintain/ss2kidbp.mspx. Das Whitepaper basiert auf SQL Server 2000, aber die Konzepte lassen sich gut auf höhere Versionen übertragen.
Manche Administratoren entscheiden sich dafür, alle Indizes jede Nacht oder jede Woche (beispielsweise mithilfe einer Wartungsplanoption) neu zu erstellen oder neu zu organisieren, statt herauszufinden, welche Indizes fragmentiert sind und ob das Entfernen der Fragmentierung von Vorteil ist. Obwohl dies eine gute Lösung für einen unfreiwilligen DBA sein kann, der einfach mit geringem Aufwand etwas erreichen möchte, kann es bei größeren Datenbanken oder Systemen, für die Ressourcen eine große Rolle spielen, eine schlechte Wahl sein.
Ein ausgereifterer Ansatz besteht in der Verwendung der DMV sys.dm_db_index_physical_stats (oder DBCC SHOWCONTIG in SQL Server 2000), um regelmäßig zu bestimmen, welche Indizes fragmentiert sind, und dann zu entscheiden, ob und wie sie behandelt werden sollten. Im Whitepaper wird auch die Verwendung dieser zielgerichteteren Möglichkeiten erörtert. Zudem finden Sie weiteren Beispielcode für diese Filterung in Beispiel D des Onlinedokumentationseintrags für DMV sys.dm_db_index_physical_stats in SQL Server 2005 (msdn.microsoft.com/library/ms188917) oder Beispiel E im Onlinedokumentationseintrag für DBCC SHOWCONTIG in SQL Server 2000 und höher (unter msdn.microsoft.com/library/aa258803).
Unabhängig von der von Ihnen verwendeten Methode ist es äußerst ratsam, die Fragmentierung regelmäßig zu untersuchen und zu optimieren.
Der Abfrageprozessor ist der Teil von SQL Server, der entscheidet, wie eine Abfrage ausgeführt werden sollte, insbesondere welche Tabellen und Indizes verwendet und welche Vorgänge an ihnen durchgeführt werden sollten, um die Ergebnisse zu erhalten. Dies wird als Abfrageplan bezeichnet. Einige der wichtigsten Eingaben für diesen Entscheidungsfindungsprozess sind Statistiken, die die Verteilung der Datenwerte für Spalten innerhalb einer Tabelle oder eines Index beschreiben. Offensichtlich müssen Statistiken korrekt und aktuell sein, um für den Abfrageprozessor nützlich zu sein. Andernfalls könnten Abfragepläne mit schlechter Leistung ausgewählt werden.
Statistiken werden durch das Lesen der Tabellen-/Indexdaten und Bestimmen der Datenverteilung für die relevanten Spalten generiert. Statistiken können durch Scannen aller Datenwerte für eine bestimmte Spalte (vollständiger Scan) erstellt werden, aber sie können auch auf einem vom Benutzer angegebenen Prozentsatz der Daten (Stichprobenscan) basieren. Wenn die Verteilung der Werte in einer Spalte ziemlich gleichmäßig ist, sollte ein Stichprobenscan ausreichen. Auf diese Weise kann das Erstellen und Aktualisieren der Statistiken schneller als bei einem vollständigen Scan erfolgen.
Beachten Sie, dass Statistiken automatisch erstellt und verwaltet werden können, indem die Datenbankoptionen AUTO_CREATE_STATISTICS und AUTO_UPDATE_STATISTICS aktiviert werden, wie in Abbildung 4 dargestellt. Diese sind standardmäßig aktiviert, aber wenn Sie eine Datenbank gerade erst übernommen haben, sollten Sie dies sicherheitshalber überprüfen. Manchmal können Statistiken veraltet sein. In diesem Fall ist das manuelle Aktualisieren mithilfe des Vorgangs UPDATE STATISTICS bei besonderen Statistiksätzen möglich. Alternativ kann die gespeicherte Prozedur „sp_updatestats“ verwendet werden, die alle veralteten Statistiken aktualisiert (in SQL Server 2000 aktualisiert sp_updatestats alle Statistiken unabhängig vom Alter).
Abbildung 4 Ändern von Datenbankeinstellungen mithilfe von SQL Server Management Studio (zum Vergrößern auf das Bild klicken)
Wenn Sie Statistiken als Teil Ihres regelmäßigen Wartungsplans aktualisieren möchten, gibt es einen Haken, den Sie kennen sollten. Sowohl bei UPDATE STATISTICS als auch bei sp_updatestats wird (gegebenenfalls) standardmäßig die vorher angegebene Stichprobenstufe verwendet, und dabei kann es sich um weniger als einen vollständigen Scan handeln. Indexneuerstellungen aktualisieren Statistiken automatisch mit einem vollständigen Scan. Wenn Statistiken manuell nach einer Indexneuerstellung aktualisiert werden, besteht die Möglichkeit, dass die Statistiken nicht ganz korrekt sind! Dies kann geschehen, wenn ein Stichprobenscan aus der manuellen Aktualisierung den von der Indexneuerstellung generierten vollständigen Scan überschreibt. Andererseits werden Statistiken durch die Neuorganisation eines Index überhaupt nicht aktualisiert.
Auch hier gilt, dass viele Administratoren einen Wartungsplan haben, der alle Statistiken zu irgendeinem Zeitpunkt vor oder nach dem Neuerstellen aller Indizes aktualisiert, sodass sie schließlich unwissentlich weniger genaue Statistiken haben. Wenn Sie entscheiden, alle Indizes gelegentlich neu zu erstellen, bezieht dies auch die Statistiken mit ein. Wenn Sie sich für den komplexeren Weg der Defragmentierung entscheiden, sollte dies auch bei der Statistikwartung geschehen. Ich schlage Folgendes vor:
  • Analysieren Sie Indizes, und legen Sie fest, welche Indizes behandelt werden sollen und wie die Defragmentierung erfolgen soll.
  • Für alle Indizes, die nicht neu erstellt wurden, werden die Statistiken aktualisiert.
  • Aktualisieren Sie die Statistiken für alle nicht indizierten Spalten.
Weitere Informationen zu Statistiken finden Sie im Whitepaper „Vom Abfrageoptimierer in Microsoft® SQL Server 2005 verwendete Statistiken“ (microsoft.com/technet/prodtechnol/sql/2005/qrystats.mspx).

Erkennen von Beschädigungen
Die leistungsbezogene Wartung wurde erörtert. Nun geht es um ein anderes Thema, nämlich das Erkennen und Begrenzen von Beschädigungen.
Es ist sehr unwahrscheinlich, dass die Datenbank, die Sie verwalten, völlig nutzlose Informationen enthält, die niemanden interessieren. Wie kann also dafür gesorgt werden, dass die Daten weiterhin vor Beschädigungen sicher sind und im Notfall wiederhergestellt werden können? Die Einzelheiten einer vollständigen Strategie für Notfallwiederherstellung und hohe Verfügbarkeit würden den Rahmen dieses Artikels sprengen, aber es gibt einige einfache Dinge, die Sie tun können.
Die überwältigende Mehrheit von Beschädigungen wird durch „Hardware“ verursacht. Warum ich das Wort in Anführungszeichen gesetzt habe? Hardware ist in diesem Fall eine Kurzbezeichnung für „etwas im E/A-Subsystem unterhalb von SQL Server“. Das E/A-Subsystem besteht aus Elementen wie beispielsweise dem Betriebssystem, den Dateisystemtreibern, Gerätetreibern, RAID-Controllern, Kabeln, Netzwerken und den eigentlichen Laufwerken. Dies sind viele Stellen, an denen Probleme auftreten können (was auch geschieht).
Zu einem der häufigsten Probleme kommt es bei einem Netzausfall, wenn ein Laufwerk gerade damit beschäftigt ist, eine Datenbankseite zu schreiben. Wenn das Laufwerk den Schreibvorgang nicht abschließen kann, bevor die Stromzufuhr unterbrochen wird (oder Schreibvorgänge zwischengespeichert werden und keine ausreichende Notfallenergieversorgung vorhanden ist, um den Cache des Laufwerks zu leeren), könnte das Ergebnis ein unvollständiges Seitenabbild auf dem Datenträger sein. Dies kann geschehen, da sich eine 8-KB-Datenbankseite aus 16 zusammenhängenden 512-Byte-Datenträgersektoren zusammensetzt. Ein unvollständiger Schreibvorgang könnte einige der Sektoren der neuen Seite geschrieben, aber einige Sektoren des vorherigen Seitenabbilds unverändert gelassen haben. Diese Situation wird als zerrissene Seite bezeichnet. Wie können Sie feststellen, ob dies geschehen ist?
SQL Server verfügt über eine Methode zum Erkennen dieser Situation. Dazu werden einige Bits von jedem Sektor der Seite gespeichert, und an ihrer Stelle wird ein bestimmtes Muster geschrieben (dies geschieht kurz bevor die Seite auf den Datenträger geschrieben wird). Wenn das Muster beim Wiedereinlesen der Seite nicht das gleiche ist, weiß SQL Server, dass die Seite „zerrissen“ war und gibt einen Fehler aus.
In SQL Server 2005 und höher steht eine umfassendere Methode mit der Bezeichnung „Seitenprüfsummen“ zur Verfügung, die Beschädigungen auf einer Seite erkennen kann. Dies beinhaltet das Schreiben einer ganzseitigen Prüfsumme auf der Seite, bevor sie geschrieben wird, und das Testen der Seite, wenn sie wieder eingelesen wird, genau wie dies beim Erkennen zerrissener Seiten der Fall ist. Nach dem Aktivieren der Seitenprüfsummen muss eine Seite in den Pufferpool eingelesen, geändert und dann wieder auf den Datenträger geschrieben werden, bevor sie durch eine Seitenprüfsumme geschützt wird.
Daher ist es eine bewährte Methode, Seitenprüfsummen ab SQL Server 2005 zu aktivieren und die Erkennung zerrissener Seiten in SQL Server 2000 zu aktivieren. Verwenden Sie zum Aktivieren von Seitenprüfsummen folgenden Befehl:﻿
ALTER DATABASE MyDatabase SET PAGE_VERIFY CHECKSUM;
Zum Aktivieren der Erkennung zerrissener Seiten in SQL Server 2000 dient folgender Befehl:
ALTER DATABASE MyDatabase SET TORN_PAGE_DETECTION ON;
Mithilfe dieser Methoden können Sie erkennen, wenn eine Seite eine Beschädigung enthält, aber nur, wenn die Seite gelesen wird. Wie kann auf einfache Weise erzwungen werden, dass alle zugeordneten Seiten gelesen werden? Die beste Methode dafür (und für die Suche nach anderen Arten von Beschädigungen) ist der Befehl DBCC CHECKDB. Unabhängig von den angegebenen Optionen liest dieser Befehl immer alle Seiten in der Datenbank, sodass alle Seitenprüfsummen oder die Erkennung zerrissener Seiten überprüft werden. Sie sollten auch Warnungen einrichten, damit Sie wissen, wann Benutzern beim Ausführen von Abfragen Beschädigungsproblemen begegnen. Mithilfe einer Warnung für Fehler des Schweregrads 24 (Abbildung 5) können Sie über alle oben beschriebenen Probleme benachrichtigt werden.
Abbildung 5 Einrichten einer Warnung für alle Fehler des Schweregrads 24 (zum Vergrößern auf das Bild klicken)
Eine weitere bewährte Methode besteht darin, bei Datenbanken regelmäßig DBCC CHECKDB zum Überprüfen ihrer Integrität auszuführen. Es gibt viele Variationen dieses Befehls sowie Fragen dazu, wie oft er ausgeführt werden sollte. Leider gibt es zu diesem Thema kein Whitepaper. Da DBCC CHECKDB jedoch das Hauptstück des Codes war, den ich für SQL Server 2005 geschrieben habe, habe ich diesbezüglich ausführliche Blogbeiträge verfasst. Die Kategorie „CHECKDB From Every Angle“ meines Blogs (sqlskills.com/blogs/paul) enthält viele ausführliche Artikel zur Konsistenzüberprüfung sowie bewährte Methoden und Anleitungen. Für unfreiwillige DBAs lautet die Faustregel, dass ein DBCC CHECKDB so oft wie eine vollständige Datenbanksicherung ausgeführt werden sollte (mehr dazu unten). Ich empfehle das Ausführen des folgenden Befehls:
DBCC CHECKDB ('MyDatabase') WITH NO_INFOMSGS,
  ALL_ERRORMSGS;
Wenn dieser Befehl zu einer Ausgabe führt, hat DBCC einige Beschädigungen in der Datenbank gefunden. Jetzt stellt sich die Frage, was getan werden sollte, wenn DBCC CHECKDB Beschädigungen findet. Hier kommen Sicherungen ins Spiel.
Wenn es zu einer Beschädigung kommt oder ein anderer Notfall eintritt, besteht die wirksamste Wiederherstellungsmöglichkeit in der Wiederherstellung der Datenbank aus Sicherungen. Dies setzt natürlich voraus, dass Sicherungen vorhanden sind und dass sie selbst unbeschädigt sind. Häufig wird gefragt, wie eine stark beschädigte Datenbank wiederhergestellt werden kann, obwohl keine Sicherung vorhanden ist. Die einfache Antwort lautet, dass dies nicht möglich ist. Es wird immer zu einem gewissen Datenverlust kommen, der bei Ihrer Geschäftslogik und der relationalen Datenintegrität schweren Schaden anrichtet.
Dies ist also ein guter Grund für regelmäßig durchgeführte Sicherungen. Die Feinheiten beim Verwenden von Sicherungen und Wiederherstellung gehen weit über den Rahmen dieses Artikels hinaus, aber ich möchte eine kurze Einführung in das Einrichten einer Sicherungsstrategie geben.
Erstens sollten Sie regelmäßig vollständige Datenbanksicherungen durchführen. So verfügen Sie über eine Version zu einem bestimmten Zeitpunkt, die später wiederhergestellt werden kann. Sie können eine vollständige Datenbanksicherung mithilfe des Befehles BACKUP DATABASE durchführen. In der Onlinedokumentation finden Sie Beispiele. Als zusätzlichen Schutz können Sie die OPTION WITH CHECKSUM verwenden, die (gegebenenfalls) die Seitenprüfsummen der Seiten prüft, die gelesen werden, und eine Prüfsumme für die gesamte Sicherung berechnet. Dies sollte so häufig geschehen, dass nur eine begrenzte Menge an Daten oder Arbeiten in Ihrem Unternehmen verloren gehen kann. Wenn Sie beispielsweise einmal pro Tag eine vollständige Datenbanksicherung durchführen, können Sie in einem Notfall die Daten eines ganzen Tags verlieren. Wenn Sie nur vollständige Datenbanksicherungen verwenden, sollten Sie das Wiederherstellungsmodell SIMPLE verwenden (normalerweise als Wiederherstellungsmodus bezeichnet), um Schwierigkeiten hinsichtlich der Verwaltung des Transaktionsprotokollwachstums zu vermeiden.
Zweitens sollten Sicherungen immer ein paar Tage lang aufbewahrt werden, falls eine Sicherung beschädigt wird. Eine Sicherung, die einige Tage alt ist, ist immer besser als gar keine Sicherung. Sie sollten die Integrität Ihrer Sicherungen immer mithilfe des Befehls RESTORE WITH VERIFYONLY prüfen (weitere Informationen dazu finden Sie in der Onlinedokumentation). Wenn Sie beim Herstellen der Sicherung die Option WITH CHECKSUM verwendet haben, wird beim Ausführen des Überprüfungsbefehls geprüft, ob die Sicherungsprüfsumme noch gültig ist. Zudem werden alle Seitenprüfsummen der Seiten innerhalb der Sicherung erneut geprüft.
Drittens könnte es angebracht sein, differenzielle Datenbanksicherungen zu untersuchen, wenn eine tägliche, vollständige Datenbanksicherung es Ihnen nicht ermöglicht, den für Ihr Unternehmen tragbaren maximalen Daten-/Arbeitsverlust zu erreichen. Eine differenzielle Datenbanksicherung basiert auf einer vollständigen Datenbanksicherung und enthält einen Datensatz aller Änderungen seit der letzten vollständigen Sicherung (ein häufiger Irrtum ist, dass differenzielle Sicherungen inkrementell wären – sie sind es nicht). Eine Beispielstrategie könnte darin bestehen, eine täglichem, vollständige Datenbanksicherung mit einer differenziellen Datenbanksicherung alle vier Stunden durchzuführen. Eine differenzielle Sicherung bietet eine einzelne, zusätzliche Wiederherstellungsoption zu einem bestimmten Zeitpunkt. Wenn Sie nur vollständige Datenbank- und differenzielle Datenbankensicherungen verwenden, sollten Sie immer noch das Wiederherstellungsmodell SIMPLE verwenden.
Die ultimative Lösung bei der Wiederherstellbarkeit besteht in der Verwendung von Protokollsicherungen. Diese stehen nur in den Wiederherstellungsmodellen FULL (oder BULK_LOGGED) zur Verfügung und bieten die Sicherung aller Protokolldatensätze, die seit der vorherigen Protokollsicherung generiert wurden. Das Verwalten eines Satzes von Protokollsicherungen mit periodischen, vollständigen Datenbanksicherungen (und möglicherweise differenziellen Datenbanksicherungen) bietet eine unbegrenzte Zahl von Zeitpunkten, für die eine Wiederherstellung durchgeführt werden kann, einschließlich der minutengenauen Wiederherstellung. Der Kompromiss besteht dabei darin, dass das Transaktionsprotokoll weiter wächst, bis es durch eine Protokollsicherung „befreit“ wird. Eine mögliche Strategie wäre hier eine tägliche, vollständige Datenbanksicherung, eine differenzielle Datenbanksicherung alle vier Stunden sowie eine Protokollsicherung jede halbe Stunde.
Das Festlegen und Einrichten einer Sicherungsstrategie kann kompliziert sein. Zumindest sollten Sie eine regelmäßige, vollständige Datenbanksicherung durchführen, um sicherzustellen, dass mindestens ein Zeitpunkt vorhanden ist, für den eine Wiederherstellung durchgeführt werden kann.
Wie Sie sehen, gibt es einige Aufgaben, die unbedingt durchgeführt werden müssen, um sicherzustellen, dass Ihre Datenbank einwandfrei und verfügbar bleibt. Hier ist meine endgültige Checkliste für einen unfreiwilligen DBA, der eine Datenbank übernimmt:
  • Entfernen Sie übermäßige Transaktionsprotokolldateifragmentierung.
  • Stellen Sie die automatische Vergrößerung richtig ein.
  • Schalten Sie geplante Verkleinerungsvorgänge aus.
  • Schalten Sie die sofortige Dateiinitialisierung ein.
  • Sorgen Sie dafür, dass Indexfragmentierung durch einen regelmäßigen Prozess erkannt und entfernt wird.
  • Schalten Sie AUTO_CREATE_STATISTICS und AUTO_UPDATE_STATISTICS ein, und sorgen Sie dafür, dass Statistiken durch einen regelmäßigen Prozess aktualisiert werden.
  • Schalten Sie Seitenprüfsummen (oder zumindest das Erkennen zerrissener Seiten in SQL Server 2000) ein.
  • Es sollte ein regelmäßiger Prozess zum Ausführen von DBCC CHECKDB vorhanden sein.
  • Es sollte ein regelmäßiger Prozess für vollständige Datenbanksicherungen sowie differenzielle Sicherungen und Protokollsicherungen für die Wiederherstellung für einen bestimmten Zeitpunkt vorhanden sein.
Ich habe in diesem Artikel T-SQL-Befehle angegeben, aber auch mit Management Studio kann viel getan werden. Ich hoffe, dies waren einige nützliche Hinweise für die effektive Datenbankwartung. Wenn Sie Feedback oder Fragen haben, schreiben Sie mir unter paul@sqlskills.com.

Paul S. Randal ist der leitende Direktor von SQLskills.com und ein SQL Server-MVP. Paul Randal war von 1999 bis 2007 im SQL Server-Speichermodulteam von Microsoft tätig. Er ist Experte für Notfallwiederherstellung, hohe Verfügbarkeit und Datenbankwartung. Sein Blog befindet sich unter SQLskills.com/blogs/paul.

© 2008 Microsoft Corporation und CMP Media, LLC. Alle Rechte vorbehalten. Die nicht genehmigte teilweise oder vollständige Vervielfältigung ist nicht zulässig.


Windows-Verwaltung
Fühlen Sie den Puls Ihres Servers
Steven Choy
Auf einen Blick:
  • Anpassen von Systemmonitor
  • Was sollte wie oft gemessen werden?
  • Überblick über die wichtigsten Indikatoren und worauf geachtet werden muss

Inhalt
Verbessern der Lesbarkeit der Ergebnisse
Was muss wann gemessen werden?
Festplattenengpass
Speicherengpass
Prozessorengpass
Netzwerkengpass
Prozessengpass
Zusammenfassung
Stellen Sie sich vor, Sie kommen an einem Montagmorgen ins Büro und werden sofort von einem arbeitswütigen Benutzer bestürmt, der sich darüber beklagt, dass sein Server zu langsam arbeitet. Wo könnten Sie überhaupt ansetzen, um ihm zu helfen? Ein
in Windows® integriertes nützliches Tool namens „Systemmonitor“ kann Ihnen helfen, das Problem zu analysieren.
Sie können auf Systemmonitor zugreifen, indem Sie an der Eingabeaufforderung „perfmon“ eingeben oder (in Windows Vista® und Windows Server® 2008) im Menü „Verwaltung“ entweder „Leistung“ oder „Zuverlässigkeit“ und danach „Systemmonitor“ auswählen. Um Leistungsindikatoren und -objekte hinzuzufügen, die überwacht werden sollen, klicken Sie einfach auf das Pluszeichen, und wählen Sie unter einer Vielzahl möglicher Optionen.
Wie können Sie den Puls eines Servers fühlen? Es gibt mehr als 60 grundlegende Leistungsobjekte, und jedes dieser Objekte enthält mehrere Indikatoren. In diesem Artikel werde ich auf die Indikatoren für die wichtigsten Lebenszeichen eines Servers eingehen und die typischen Abtastintervalle beschreiben, die von Microsoft® Service Support-Technikern am häufigsten verwendet werden, um Probleme mit der Leistung zu beheben.
Basisdaten stellen natürlich bei der Problembehebung einen wichtigen Bezugspunkt dar. Da die Serverlast von den Geschäftsanforderungen abhängt und sich in Abhängigkeit vom Geschäftszyklus von Zeit zu Zeit ändert, ist es wichtig, anhand der normalen Arbeitsauslastung über einen bestimmten Zeitraum hinweg Basisdaten festzulegen. Dies ermöglicht Ihnen, Veränderungen zu beobachten und Trends zu erkennen.

Verbessern der Lesbarkeit der Ergebnisse
Bevor ich mich einer Analyse der Indikatoren für die wichtigsten Lebenszeichen von Servern zuwende, verrate ich Ihnen zwei Tricks, die Ihnen die Aufgabe erleichtern werden, mit Systemmonitor die wichtigsten Lebenszeichen von Servern zu messen. Beachten Sie, dass diese Tricks in Windows Vista und Windows Server 2008 nicht notwendig sind, aber sehr nützlich sein können, wenn Sie Systemmonitor unter älteren Windows-Versionen ausführen.
Zunächst können Sie das ganze verwirrende Chaos der vielen Abtastwerte entfernen, das die grafische Ansicht von Trendlinien verdeckt. In Windows Vista und Windows Server 2008 kann Systemmonitor bis zu 1000 Datenpunkte in einer grafischen Ansicht anzeigen. In früheren Windows-Versionen war dies nur mit maximal 100 Datenpunkten möglich. Wenn mehr als 100 Punkte vorhanden sind, werden die Datenpunkte von Systemmonitor zu so genannten „Buckets“ zusammengefasst. Ein Bucket wird durch eine vertikale Linie repräsentiert, die den Minimalwert, den Durchschnittswert und den Maximalwert der im Bucket enthaltenen Abtastpunkte darstellt.
Wie Sie anhand des Diagramms in Abbildung 1 sehen können, ist die Trendlinie nur schwer zu erkennen, wenn sehr viele Daten gleichzeitig angezeigt werden. Das Diagramm in Abbildung 2 zeigt, wie viel leichter sich die Daten schnell erfassen lassen, wenn alle überflüssigen visuellen Informationen ausgeschaltet werden. Ausführliche Informationen dazu, wie Sie diese vertikalen Linien ausschalten können, finden Sie im Knowledge Base-Artikel unter support.microsoft.com/kb/283110.
Abbildung 1 Mit ablenkenden Buckets und ohne Kommas angezeigte Leistungsdaten (zum Vergrößern auf das Bild klicken)
Abbildung 2 Eine sauberere Datenansicht mit Kommatrennzeichen (zum Vergrößern auf das Bild klicken)
Der zweite Trick besteht darin, in die Zahlen Kommatrennzeichen einzufügen, mit denen sich die in den Indikatoren gezeigten Werte viel leichter lesen lassen. In Windows Vista und Windows Server 2008 sind Kommatrennzeichen standardmäßig aktiviert. In früheren Versionen von Windows dagegen sind in der Standardeinstellung Kommas in Systemmonitor nicht aktiviert.
Das hört sich zwar nicht so an, als würde es einen großen Unterschied machen, aber betrachten Sie einmal Abbildung 1, in der die Leistungsindikatoren ohne Kommas angezeigt werden, und danach Abbildung 2, in der die Indikatoren mit Kommas zu sehen sind. Ich finde, dass die zweite Abbildung wesentlich lesbarer ist. Einige einfache Anleitungen zum Hinzufügen von Kommatrennzeichen zu Ihren Leistungsindikatoren in Windows XP finden Sie im Knowledge Base-Artikel unter support.microsoft.com/kb/300884.

Was muss wann gemessen werden?
Engpässe treten ein, wenn eine Ressource ihre maximale Kapazität erreicht, und verringern die Leistung des Systems. Engpässe werden in der Regel durch unzureichend oder falsch konfigurierte Ressourcen, versagende Komponenten und falsche Ressourcenanforderungen durch ein Programm verursacht.
Es gibt fünf Hauptressourcenbereiche, die Engpässe verursachen und die Serverleistung beeinträchtigen können: physische Datenträger, Speicher, Prozesse, CPU und Netzwerk. Wenn eine dieser Ressourcen überstrapaziert wird, kann dies zur Folge haben, dass Ihr Server oder Ihre Anwendung spürbar langsamer wird oder sogar abstürzt. Ich werde jeden dieser fünf Bereiche erörtern. Dabei werde ich Ihnen Tipps geben, welche Indikatoren Sie verwenden sollten, und Grenzwerte vorschlagen, mit deren Hilfe Sie den Puls Ihrer Server fühlen können.
Da das Abtastintervall beträchtliche Auswirkungen auf die Größe der Protokolldatei und das Ausmaß der Serverlast hat, sollten Sie das Abtastintervall an der Zeitspanne orientieren, die im Durchschnitt vergeht, bis das Problem auftritt, um Basisdaten festlegen zu können, bevor das Problem erneut auftritt. Dies ermöglicht Ihnen, alle Trends zu erkennen, die zum Problem führen.
Fünfzehn Minuten stellen einen vernünftigen Zeitraum dar, um im Verlauf normaler Arbeitsprozesse Basisdaten festzulegen. Setzen Sie das Abtastintervall auf 15 Sekunden, falls der durchschnittliche Zeitraum, nach dem das Problem auftritt, ungefähr vier Stunden beträgt. Tritt das Problem nach acht oder mehr Stunden auf, dann setzen Sie das Abtastintervall auf mindestens fünf Minuten, da Sie sonst eine sehr umfangreiche Protokolldatei erhalten, die es schwieriger macht, die Daten zu analysieren.

Festplattenengpass
Da das Datenträgersystem Programme und Daten auf dem Server speichert und verwaltet, hat ein Engpass, der sich auf die Datenträgernutzung und die Datenträgergeschwindigkeit auswirkt, großen Einfluss auf die Gesamtleistung des Servers.
Beachten Sie, dass Sie dann, wenn die Datenträgerobjekte auf Ihrem Server nicht aktiviert sind, das Befehlszeilentool „Diskperf“ verwenden müssen, um sie zu aktivieren. Beachten Sie auch, dass der Wert von „Zeit (%)“ den Betrag 100 Prozent überschreiten kann und ich es daher vorziehe, „Leerlaufzeit (%)“, „Mittlere Sek./Lesevorgänge“ und „Mittlere Sek./Schreibvorgänge“ zu verwenden, weil diese Werte ein exakteres Bild der Festplattenauslastung liefern. Weitere Informationen zu „Zeit (%)“ finden Sie im Knowledge Base-Artikel unter support.microsoft.com/kb/310067.
Bei der Datenträgerüberwachung verlassen sich die Microsoft Service Support-Techniker auf die folgenden Indikatoren:
LogicalDisk\Freier Speicherplatz (%) Damit wird der prozentuale Anteil des freien Speicherplatzes am ausgewählten logischen Festplattenlaufwerk gemessen. Achten Sie darauf, ob dieser Wert unter 15 Prozent fällt, denn dann besteht die Gefahr, dass dem Betriebssystem nicht mehr genügend freier Speicherplatz zum Speichern wichtiger Dateien zur Verfügung steht. Eine offensichtliche Lösung zur Behebung dieses Problems besteht darin, mehr Speicherplatz hinzuzufügen.
PhysicalDisk\Leerlaufzeit (%) Damit wird der prozentuale Anteil der Zeit gemessen, in der sich der Datenträger während des Beispielintervalls im Leerlauf befand. Wenn dieser Wert unter 20 Prozent fällt, ist das Datenträgersystem ausgelastet. Sie sollten in Betracht ziehen, das aktuelle Datenträgersystem durch ein schnelleres Datenträgersystem zu ersetzen.
PhysicalDisk\Mittlere Sek./Lesevorgänge Damit wird die Durchschnittszeit in Sekunden gemessen, mit der Daten vom Datenträger gelesen werden. Ist dieser Wert größer als 25 Millisekunden (ms), bedeutet dies, dass beim Lesen vom Datenträger eine Latenzzeit des Datenträgersystems vorliegt. Bei unternehmenswichtigen Servern, die SQL Server® und Exchange Server hosten, liegt der akzeptable Grenzwert wesentlich niedriger (ungefähr bei 10 ms). Die logischste Lösung zur Behebung dieses Problems besteht darin, das aktuelle Datenträgersystem durch ein schnelleres Datenträgersystem zu ersetzen.
PhysicalDisk\Mittlere Sek./Schreibvorgänge Damit wird die Durchschnittszeit in Sekunden gemessen, mit der Daten auf den Datenträger geschrieben werden. Ist dieser Wert größer als 25 ms, liegt beim Schreiben auf den Datenträger eine Latenzzeit des Datenträgersystems vor. Bei unternehmenswichtigen Servern, die SQL Server und Exchange Server hosten, liegt der akzeptable Grenzwert wesentlich niedriger (ungefähr bei 10 ms). Die logischste Lösung zur Behebung dieses Problems besteht darin, das aktuelle Datenträgersystem durch ein schnelleres Datenträgersystem zu ersetzen.
PhysicalDisk\Durchschnittl. Warteschlangenlänge des Datenträgers Damit wird angegeben, wie viele E/A-Vorgänge darauf warten, dass die Festplatte verfügbar wird. Ist dieser Wert größer als die Anzahl der Datenträgerspindeln plus zwei, bedeutet dies, dass der Datenträger selbst die Ursache des Engpasses sein könnte.
Speicher\Cachebytes Damit wird angegeben, wie viel Speicher für den Dateisystemcache verwendet wird. Ist dieser Wert größer als 200 MB, liegt eventuell ein Datenträgerengpass vor.

Speicherengpass
Ein Speichermangel wird in der Regel durch unzureichenden RAM, einen Speicherverlust oder einen in der Datei „boot.ini“ eingefügten Speicherschalter verursacht. Bevor ich auf Speicherindikatoren eingehe, muss ich zuerst den Schalter „/3GB“ erläutern.
Mehr Speicher bedeutet eine verringerte Datenträger-E/A-Aktivität und dadurch auch eine verbesserte Anwendungsleistung. Der Schalter „/3GB“ wurde in Windows NT® als Möglichkeit eingeführt, für die Benutzermodusprogramme mehr Speicher bereitstellen zu können.
Windows verwendet einen virtuellen Adressbereich von 4 GB (unabhängig davon, über wie viel physischen RAM das System verfügt). Standardmäßig sind die unteren 2 GB für Benutzermodusprogramme und die oberen 2 GB für Kernelmodusprogramme reserviert. Mit dem Schalter „/3GB“ werden 3 GB für Benutzermodusprozesse reserviert. Dies geschieht natürlich auf Kosten des Kernelspeichers, der dadurch einen virtuellen Adressbereich von nur 1 GB besitzt. Dies kann Probleme verursachen, da Nicht-Auslagerungsseiten (Bytes), Auslagerungsseiten (Bytes), freie Seitentabelleneinträge und Desktopheap in diesen Bereich von nur 1 GB gezwängt werden. Deshalb sollte der Schalter „/3GB“ erst verwendet werden, nachdem in Ihrer Umgebung gründliche Tests durchgeführt wurden.
Dies muss in Betracht gezogen werden, falls Sie den Verdacht hegen, dass eventuell ein Speicherengpass vorliegt. Sollte der Schalter „/3GB“ nicht die Ursache der Probleme sein, können Sie zur Analyse eines potenziellen Speicherengpasses die folgenden Indikatoren verwenden:
Speicher\Zugesicherte verwendete Bytes (%) Damit wird das Verhältnis von „Zugesicherte Bytes“ zu „Zusicherungslimit“ (in anderen Worten: die Menge des verwendeten virtuellen Speichers) gemessen. Dieser Wert weist auf unzureichenden Speicher hin, falls die Zahl größer als 80 Prozent ist. Die offensichtliche Lösung für dieses Problem besteht darin, mehr Speicher hinzuzufügen.
Speicher\Verfügbare MB (%) Damit wird die Menge des zum Ausführen von Prozessen verfügbaren physischen Speichers in Megabytes gemessen. Beträgt dieser Wert weniger als 5 Prozent des gesamten physischen RAM, bedeutet dies, dass ein unzureichender Speicher vorliegt und eventuell die Auslagerungsaktivitäten erhöht werden. Um dieses Problem zu beheben, sollten Sie einfach mehr Speicher hinzufügen.
Speicher\Freie Seitentabelleneinträge Damit wird die Anzahl der Seitentabelleneinträge angegeben, die derzeit nicht vom System verwendet werden. Liegt dieser Wert unter 5.000, könnte ein Speicherverlust vorliegen.
Speicher\Nicht-Auslagerungsseiten (Bytes) Damit wird die Größe des nicht ausgelagerten Pools in Byte gemessen. Dies ist ein Bereich des Systemspeichers, der für Objekte verwendet wird, die nicht auf den Datenträger geschrieben werden können, sondern stattdessen im physischen Speicher bleiben müssen, solange sie zugewiesen sind. Ist dieser Wert größer als 175 MB (oder größer als 100 MB, falls der Schalter „/3GB“ verwendet wird), liegt möglicherweise ein Speicherverlust vor. Eine typische Ereignis-ID 2019 wird im Systemereignisprotokoll aufgezeichnet.
Speicher\Auslagerungsseiten (Bytes) Damit wird die Größe des ausgelagerten Pools in Byte gemessen. Dies ist ein Bereich des Systemspeichers, der für Objekte verwendet wird, die auf den Datenträger geschrieben werden können, wenn sie nicht verwendet werden. Ist dieser Wert größer als 250 MB (oder größer als 170 MB, falls der Schalter „/3GB“ verwendet wird), liegt möglicherweise ein Speicherverlust vor. Eine typische Ereignis-ID 2020 wird im Systemereignisprotokoll aufgezeichnet.
Speicher\Seiten pro Sekunde Damit wird die Rate gemessen, in der Seiten vom Datenträger gelesen oder auf den Datenträger geschrieben werden, um Hardwareseitenfehler zu beheben. Ist dieser Wert größer als 1.000, liegt möglicherweise ein durch übermäßiges Auslagern verursachter Speicherverlust vor.

﻿Prozessorengpass
Ein überlasteter Prozessor stellt eventuell aufgrund seiner eigenen Beschränkungen oder aufgrund einer ineffizienten Anwendung nicht genügend Leistung bereit. Sie müssen genau überprüfen, ob der Prozessor aufgrund eines unzureichenden Speichers viel Zeit darauf verwendet, Auslagerungsvorgänge durchzuführen. Beim Untersuchen eines potenziellen Prozessorengpasses werden von den Microsoft Service Support-Technikern die folgenden Indikatoren verwendet:
Prozessor\Prozessorzeit (%) Damit wird der prozentuale Anteil der Zeit gemessen, die der Prozessor darauf verwendet, einen nicht im Leerlauf befindlichen Thread auszuführen. Liegt der prozentuale Anteil über 85 Prozent, ist der Prozessor überlastet, und der Server benötigt eventuell einen schnelleren Prozessor.
Prozessor\Benutzerzeit (%) Damit wird der prozentuale Anteil der Zeit gemessen, die der Prozessor im Benutzermodus arbeitet. Ist dieser Wert hoch, ist der Server mit der Anwendung ausgelastet. Eine mögliche Lösung zur Behebung dieses Problems besteht darin, die Anwendung zu optimieren, von der die Prozessorressourcen in Anspruch genommen werden.
Prozessor\Interruptzeit (%) Damit wird die Zeit gemessen, die der Prozessor während bestimmter Abtastintervalle darauf verwendet, Hardwareunterbrechungen zu empfangen und zu verarbeiten. Dieser Indikator weist auf ein potenzielles Hardwareproblem hin, falls der Wert größer als 15 Prozent ist.
System\Prozessor-Warteschlangenlänge Damit wird die Anzahl der Threads in der Prozessorwarteschlange angegeben. Ist dieser Wert über einen längeren Zeitraum hinweg mehr als zwei Mal so groß wie die Anzahl der CPUs, besitzt der Server nicht genügend Prozessorleistung.

Netzwerkengpass
Ein Netzwerkengpass kann natürlich die Fähigkeit des Servers beeinträchtigen, über das Netzwerk Daten zu senden und zu empfangen. Ein solcher Engpass kann eventuell durch die Netzwerkkarte des Servers verursacht werden oder dadurch entstehen, dass das Netzwerk ausgelastet ist und segmentiert werden muss. Zum Analysieren potenzieller Netzwerkengpässe können Sie die folgenden Indikatoren verwenden:
Netzwerkschnittstelle\Bytes insgesamt/s Damit wird die Rate gemessen, mit der über jeden Netzwerkadapter Bytes (einschließlich Rahmencharakteristiken) gesendet und empfangen werden. Das Netzwerk ist ausgelastet, wenn Sie feststellen, dass über 70 Prozent der Schnittstelle genutzt werden. Bei einem mit 100 MBit/s arbeitenden NIC beträgt die Beanspruchung der Schnittstelle 8,7 MB/s (100 MBit/s = 100000 KBit/s = 12,5 MB/s * 70 Prozent). In einer derartigen Situation sollten Sie eine schnellere Netzwerkkarte hinzufügen oder das Netzwerk segmentieren.
Netzwerkschnittstelle\Ausgabewarteschlangenlänge Damit wird die Länge der Ausgabepaketwarteschlange in Paketen gemessen. Ist dieser Wert größer als 2, liegt eine Netzwerkauslastung vor. Sie können dieses Problem beheben, indem Sie eine schnellere Netzwerkkarte hinzufügen oder das Netzwerk segmentieren.

Prozessengpass
Die Serverleistung wird durch einen falsch funktionierenden oder nicht optimierten Prozess stark beeinträchtigt. Thread- und Handleverluste werden einen Server letzten Endes lahmlegen, und eine übermäßige Prozessornutzung wird einen Server auf ein Schneckentempo verlangsamen. Beim Analysieren von Prozessengpässen spielen die folgenden Indikatoren eine wichtige Rolle:
Prozess\Handleanzahl Damit wird die Gesamtanzahl der Handles gemessen, die derzeit durch einen Prozess geöffnet sind. Dieser Indikator weist auf einen potenziellen Handleverlust hin, falls der Wert größer als 10.000 ist.
Prozess\Threadanzahl Damit wird die Anzahl der Threads gemessen, die derzeit in einem Prozess aktiv sind. Ist dieser Wert zwischen der minimalen und der maximalen Anzahl von Threads größer als 500, liegt möglicherweise ein Threadverlust vor.
Prozess\Private Bytes Damit wird die diesem Prozess zugewiesene Speichermenge angegeben, die nicht zur gemeinsamen Nutzung für andere Prozesse freigegeben werden kann. Ist dieser Wert zwischen der minimalen und der maximalen Anzahl von Threads größer als 250, liegt möglicherweise ein Speicherverlust vor.

Zusammenfassung
Jetzt wissen Sie, welche Indikatoren die Service Support-Techniker von Microsoft verwenden, um die verschiedenen Engpässe zu analysieren. Natürlich werden Sie wahrscheinlich Ihre eigene Gruppe von Lieblingsindikatoren finden, die auf Ihre jeweiligen Anforderungen optimal zugeschnitten ist. Sie können Zeit sparen, indem Sie vermeiden, bei jeder Überwachung Ihrer Server Ihre gesamten Lieblingsindikatoren neu hinzufügen zu müssen. Glücklicherweise bietet Systemmonitor eine Option, mit der Sie Ihre bevorzugten Indikatoren zur späteren Wiederverwendung in einer Vorlage speichern können.
Sie fragen sich möglicherweise auch, ob Sie Systemmonitor lokal oder im Remotebetrieb ausführen sollten. Wie stark würde es die Leistung beeinträchtigen, wenn Sie Systemmonitor lokal ausführen würden? Dies alles hängt von Ihrer jeweiligen Umgebung ab. Die Beeinträchtigung der Serverleistung ist fast völlig zu vernachlässigen, wenn Sie die Intervalle auf mindestens fünf Minuten setzen.
Sie sollten Systemmonitor lokal ausführen, wenn Sie wissen, dass auf dem Server ein Leistungsproblem vorliegt, denn wenn Systemmonitor im Remotebetrieb ausgeführt wird, können möglicherweise Daten nicht erfasst werden, sobald auf dem Server ein Ressourcenmangel auftritt. Systemmonitor im Remotebetrieb von einem zentralen Computer aus auszuführen, eignet sich am besten für Situationen, in denen Sie mehrere Server überwachen oder für mehrere Server Basisdaten ermitteln möchten.

Steven Choy ist ein Senior Premier Field Engineer bei Microsoft Premier Field Engineering. Er hat Regierungsbehörden und kommerzielle Kunden bei Projekten im Bereich von Desktopbereitstellung und Migration, Patchverwaltung und Gruppenrichtlinien unterstützt. Derzeit befasst er sich mit Servervirtualisierung und Serverintegrität.


System Center
Windows PowerShell in System Center Operations Manager
Marco Shaw
Auf einen Blick:
  • Die OpsMgr-Befehlsshell
  • Der OpsMgr-Überwachungsanbieter
  • Automatisieren häufiger administrativer Aufgaben
  • Einige praktische Windows PowerShell-Beispiele

Inhalt
Operations Manager-Befehlsshell
Der OpsMgr-Überwachungsanbieter
Automatisieren häufiger Aufgaben
Praxisbeispiele
Zusammenfassung
Mit System Center Operations Manager 2007 (OpsMgr) haben Administratoren Zugriff auf Windows PowerShell, eine leistungsfähige neue Skriptsprache für das Automatisieren von Aufgaben. Seit ihrer Veröffentlichung im November 2006 wurde sie mehr als zwei Millionen Mal heruntergeladen.
In diesem Artikel wird Windows PowerShell® beschrieben, und es wird erläutert, wie diese Skriptsprache in Operations Manager verwendet werden kann. Zudem wird auf einige häufige Aufgaben eingegangen, die Sie mithilfe von Windows PowerShell viel einfacher und mit einem höheren Automatisierungsgrad durchführen können, und es werden einige Websites genannt, die nützliche Skripts und Erklärungen bieten. Dieser Artikel stützt sich auf Erkenntnisse und Blogbeiträge von zahlreichen Experten, die Windows PowerShell bereits verwenden.
Obwohl Microsoft mit der Veröffentlichung der CTP-Versionen (Community Technology Preview) von Windows PowerShell 2.0 begonnen hat, sind diese Versionen noch nicht produktionsreif, wurden nicht in Verbindung mit OpsMgr getestet und sollten nicht auf einem Produktionssystem installiert werden.

Operations Manager-Befehlsshell
In OpsMgr greifen Sie auf Windows PowerShell über die Befehlsshell zu, die der standardmäßigen Windows PowerShell-Umgebung ähnelt – mit der Ausnahme, dass eine Konsolendatei sowie ein Skript, das die Umgebung mit OpsMgr-Cmdlets, -Funktionen und einer Standardverbindung initialisiert, geladen werden.
Sie können die Befehlsshell über ein Symbol im Startmenü von OpsMgr starten oder durch Klicken mit der rechten Maustaste auf einen Computernamen in der OpsMgr-Benutzeroberflächenkonsole (siehe Abbildung 1). Dadurch wechseln Sie direkt zum Pfad des Monitoring-Laufwerks von OpsMgr (auf das an späterer Stelle eingegangen wird).
Abbildung 1 Öffnen der Befehlsshell über die OpsMgr-Benutzeroberfläche (zum Vergrößern auf das Bild klicken)
Über das OpsMgr SDK verfügt Windows PowerShell über eine Schnittstelle zu OpsMgr. Für Administratoren wurden glücklicherweise bereits Cmdlets für viele der Aufgaben bereitgestellt, die Sie in der Regel automatisieren oder von einer Befehlszeile aus durchführen möchten. Wenn für eine bestimmte Aufgabe kein Cmdlet zur Verfügung steht, können Sie Windows PowerShell für die Interaktion mit dem SDK verwenden.
Die von der Operations Manager-Befehlsshell bereitgestellten Befehle sind in einem Snap-In enthalten – einer DLL, die von Windows PowerShell geladen wird und Cmdlets für die OpsMgr-Verwaltung enthält. Das Snap-In enthält zudem den Windows PowerShell-Anbieter „OperationsManagerMonitoring“. Dieses auch als Überwachungsanbieter bezeichnete Tool ermöglicht die Navigation in Verbindungen, Gruppen und Überwachungsobjekten, die weitgehend mit der Navigation im Dateisystem vergleichbar ist.
Mithilfe des Cmdlet „Get-OperationsManagerCommand“ können Sie wie in Abbildung 2 dargestellt eine Liste aller für OpsMgr spezifischen Cmdlets abrufen. (In der ersten Version war dies eine Funktion, die nicht die Befehlszeilenergänzung mit der Tabulatortaste unterstützte. In SP1 wurde aus ihr ein Cmdlet.) Die ursprüngliche Version von Operations Manager enthielt 74 Cmdlets, während OpsMgr SP1 87 Cmdlets umfasst.
Abbildung 2 Abrufen einer Liste der OpsMgr-Cmdlets (zum Vergrößern auf das Bild klicken)

Der OpsMgr-Überwachungsanbieter
Mithilfe des Cmdlet „Set-Location“ oder des Alias „cd“ können Sie durch das Layout von Gruppen und Computern navigieren. Das Basislayout für das Monitoring-Standardlaufwerk sieht in etwa folgendermaßen aus:
Monitoring:\->RMS->Groups (as defined in OpsMgr)
  ->Computers(as defined in OpsMgr)
Von hier aus können Sie zu spezifischeren Objekten gelangen. Beachten Sie, dass es sich in diesem Fall nur um eine einfache Umgebung mit nur einem einzigen Verwaltungsserver handelt. Der erste Verwaltungsserver, der in einer Verwaltungsgruppe installiert wird, wird als Stammverwaltungsserver (Root Management Server, RMS) bezeichnet.
Wenn die Befehlsshell gestartet wird, wird ein Laufwerk namens „Monitoring“ erstellt, das Laufwerk dem Stamm des OperationsManagerMonitoring-Anbieters zugeordnet und abschließend der aktuelle Speicherort oder Pfad auf das Stammverzeichnis des Monitoring-Laufwerks gesetzt. Die Befehlsshell sucht dann in der Registrierung nach dem Namen des Standard-Stammverwaltungsservers, zu dem eine Verbindung hergestellt werden soll. Wenn die Verbindung zum Stammverwaltungsserver erfolgreich hergestellt wird, wird der aktuelle Speicherort oder Pfad auf den Namen der Verbindung oder des Stammverwaltungsservers gesetzt (siehe Abbildung 3).
Abbildung 3 Der Speicherort der Befehlsshell wird auf den Stammverwaltungsserver gesetzt (zum Vergrößern auf das Bild klicken)

Automatisieren häufiger Aufgaben
Im Folgenden wird erläutert, wie mit Windows PowerShell einige der häufigsten administrativen Aufgaben durchgeführt werden können.
Steuern des Wartungsmodus Unabhängig davon, mit welcher Aufgabe Sie sich befassen, möchten Sie in der Regel das Datum und die Uhrzeit angeben, zu dem bzw. der sie durchgeführt werden soll. Im Folgenden wird kurz das Cmdlet „Get-Date“ beschrieben, um Ihnen zu zeigen, wie einfach dieser Vorgang sein kann. Abbildung 4 zeigt einige Beispiele.
Abbildung 4 Verwenden des Cmdlet „Get-Date“ (zum Vergrößern auf das Bild klicken)
Wie Sie sehen können, wurde eine $date-Variable erstellt, die ein Objekt enthält, das die aktuelle Uhrzeit repräsentiert. Um Ihnen zu zeigen, wie Sie Datum und Uhrzeit mühelos fünf Minuten später und dann fünf Stunden später abrufen können, wurden einige dokumentierte Methoden verwendet, die von dem Objekt unterstützt werden. Falls Sie Werte aus der Vergangenheit abrufen möchten, können Sie einfach (-5) anstelle von (5) verwenden.
Wenn Sie alle Warnungen blockieren müssen, die von einem Computer kommen, können Sie den Wartungsmodus aktivieren. OpsMgr 2007 ermöglicht Ihnen, anstelle ganzer Computer oder Gruppen einen Windows®-Dienst oder sogar eine bestimmte Datenbank in den Wartungsmodus zu versetzen. Es gibt drei Cmdlets, die speziell für Aufgaben in Verbindung mit dem Wartungsmodus vorgesehen sind: „Get-MaintenanceWindow“, „New-MaintenanceWindow“ und „Set-MaintenanceWindow“.
Um einen Computer von der Befehlsshell aus in den Wartungsmodus zu versetzen, navigieren Sie mithilfe des Überwachungsanbieters zum gewünschten Computer oder Überwachungsobjekt, und rufen Sie das Cmdlet „New-MaintenanceWindow“ auf (siehe Abbildung 5). Wie Sie sehen können, wird durch diese Aktion der Computer mit dem Namen „Denver.contoso.com“ in den Wartungsmodus versetzt. Zudem wurde die Startzeit für das Wartungsfenster so definiert, dass es sofort beginnt, und die Endzeit wurde genau auf eine Stunde später gesetzt. Beachten Sie, dass nicht alle Warnungen gestoppt werden, wenn ein Computer mit dieser Methode in den Wartungsmodus versetzt wird, da die HealthService- und HealthServiceWatcher-Instanzen für dieses Objekt immer noch aktiviert sind.
Abbildung 5 Verwenden des Cmdlet „New-MaintenanceWindow“ (zum Vergrößern auf das Bild klicken)
Boris Yanushpolsky, Programmmanager im Microsoft OpsMgr-Team, hat äußerst nützlichen Windows PowerShell-Code bereitgestellt, mit dem alle Objekte, die auf einen Computer im Wartungsmodus verweisen, festgelegt werden können. Er erklärt zudem, wie Sie diesen Code nach der Erstellung eines Skripts verwenden können. Weitere Informationen hierzu finden Sie in seinem Blog unter blogs.msdn.com/boris_yanushpolsky/archive/2007/07/25/putting-a-computer-into-maintenance-mode.aspx.
Manchmal müssen Sie feststellen, ob sich Objekte im Wartungsmodus befinden, bei denen dies nicht beabsichtigt ist. Es kann jedoch eine relativ umfangreiche Aufgabe darstellen, alle Objekte durchzugehen, um dies herauszufinden. Glücklicherweise kommt Ihnen Boris Yanushpolsky erneut mit einem Windows PowerShell-Skript zu Hilfe, bei dem das OpsMgr SDK verwendet wird. Sie können den Code direkt aus seinem Blogbeitrag kopieren (blogs.msdn.com/boris_yanushpolsky/archive/2007/08/06/so-what-is-in-maintenance-mode.aspx) und ihn in ein Befehlsshellfenster einfügen, um eine Liste aller im Wartungsmodus befindlichen Objekte abzurufen.
Wenn sich ein Objekt im Wartungsmodus befindet, möchten Sie eventuell den Wartungszeitraum vor der ursprünglich angegebenen Endzeit beenden. Falls Sie mit Windows PowerShell vertraut sind, erwarten Sie möglicherweise ein Cmdlet mit einem stop- oder remove-Verb. Tatsächlich müssen Sie aber „Set-MaintenanceWindow“ wie in Abbildung 6 verwenden.
Abbildung 6 Ändern der Endzeit mithilfe von „Set-MaintenanceWindow“ (zum Vergrößern auf das Bild klicken)
Verwalten von Agents Administratoren arbeiten sehr häufig mit Agents, und es sind sechs Cmdlets und eine Funktion (ab der aktuellen Version) vorhanden, die für verschiedene Aufgaben im Zusammenhang mit Agents vorgesehen sind. Sie können eine entsprechende Liste mit dem folgenden Befehl abrufen:
Get-Command *-agent*
Ab der SP1-Version wird Install-AgentByName nicht mehr als Funktion, sondern als Cmdlet bereitgestellt. Es wird empfohlen, dass Sie das Cmdlet „Install-AgentByName“ verwenden, da es eine bessere Grundlage für Unterstützung und Konsistenz bietet.
Die integrierte Hilfe der Befehlsshell enthält einige gute Beispiele für die Verwendung der Cmdlets „Install-Agent“ und „Uninstall-Agent“. Roger Sprague, Senior Software Design Engineer im Microsoft OpsMgr-Team, hat eine alternative Methode in seinem Blog veröffentlicht, die in Abbildung 7 dargestellt ist (seinen ursprünglichen Beitrag finden Sie unter blogs.msdn.com/scshell/archive/2006/09/28/getting-started.aspx).
Dieses Skript funktioniert in Verbindung mit der RTM-Version von OpsMgr problemlos (Sie müssen es im Stammverzeichnis des Überwachungsanbieters ausführen – in diesem Artikel monitoring:\oxford.contoso.com), schlägt aber bei OpsMgr SP1 fehl. Damit das Skript in Verbindung mit OpsMgr SP1 funktioniert, sollte der erste Befehl in Abbildung 7 wie folgt geändert werden:
$managementServer = Get-RootManagementServer
Abbildung 7 Installieren eines Agent
# Get the Root Management Server.
$managementServer = Get-ManagementServer -Root: $true

# Create the discovery configuration for computer2 and computer3.
$discoConfig = New-WindowsDiscoveryConfiguration -ComputerName: computer2, computer3

# Discover the computers.
$discoResult = Start-Discovery -ManagementServer: $managementServer -WindowsDiscoveryConfiguration: $discoConfig

# Install an agent on each computer.
Install-Agent -ManagementServer: $managementServer -AgentManagedComputer: $discoResult.CustomMonitoringObjects
Jetzt ist der Agent auf dem Remotesystem installiert, das überwacht werden soll. Es muss aber noch ein letzter Schritt durchgeführt werden, bei dem der Verwaltungsserver den neuen Agent tatsächlich akzeptieren muss, bevor er vollständig überwacht wird. Wenn keine weitere Aktion durchgeführt wird, akzeptiert der Überwachungsserver den neuen Agent automatisch für die Überwachung. Dieser Annahmeprozess kann aber auch mithilfe des Cmdlet „Get-AgentPendingAction“ beschleunigt werden. Mit der folgenden Codezeile wird der Agentannahmeprozess beschleunigt:
Get-AgentPendingAction | Where Object {$_.AgentName –like
'computer*'} | Approve-AgentPendingAction
Durch das Weiterleiten an „Reject-AgentPendingAction“ anstelle von „Approve-AgentPendingAction“ können Sie die Annahme dieses Agent durch den OpsMgr-Server blockieren, wenn die Aktion noch aussteht. Wenn sie nicht mehr aussteht, verwenden Sie stattdessen das Cmdlet „Uninstall-Agent“.
Wie bereits erwähnt, können Sie auch mithilfe von „InstallAgentByName“ direkt in der Befehlszeile einen Computer angeben, auf dem der Agent installiert werden soll.
Arbeiten mit Management Packs Es gibt vier Cmdlets, die Ihnen bei verschiedenen Aufgaben in Verbindung mit Management Packs helfen. Sie können sie mit dem folgenden Befehl auflisten:
Get-Command –noun ManagementPack
Mit diesem einfachen Befehl werden die derzeit installierten Management Packs und ihre Versionsnummern abgerufen:
Get-ManagementPack | Format-Table –autosize
Jetzt wird die Befehlsshell verwendet, um zwei Standard-Management Packs mithilfe der folgenden Installationsprogramme zu installieren:
  • Internet Information Services System Center Operations Manager2007 Management Pack.msi
  • Windows Server® Base OS System Center Operations Manager2007 Management Pack.msi
Da das Ziel darin besteht, Ihnen zu zeigen, wie mithilfe der Befehlsshell reguläre Aufgaben vereinfacht werden können, werden hierzu so wenige Befehle wie möglich verwendet (siehe Abbildung 8). Dieses Installationsverfahren hätte auch so geändert werden können, dass das quiet-Kennzeichen an das Installationsprogramm (die .msi-Dateien) übergeben wird, aber es sollte der Speicherort ausgewählt werden, an dem die Dateien manuell extrahiert werden.
Abbildung 8 Installieren von Management Packs (zum Vergrößern auf das Bild klicken)
Als Nächstes müssen die gemeinsamen Bibliotheken installiert werden, was folgendermaßen erreicht werden kann:
Get-ChildItem –Path C:\MPs –filter *Library.mp |
ForEach-Object
  {Install-ManagementPack –filePath $_.FullName}
Dann werden die anderen erforderlichen Management Packs installiert:
Get-ChildItem –Path C:\MPs –filter *200?.mp |
ForEach-Object
  {Install-ManagementPack –filePath $_.FullName}
Wie in Abbildung 9 zeigt, bietet die integrierte Hilfe der Befehlsshell ein hervorragendes Beispiel für den Export von nicht versiegelten Management Packs mithilfe des Cmdlet „Export-ManagementPack“. Wenn Sie alle Management Packs exportieren möchten, ändern Sie die folgende Zeile:
$mps=Get-ManagementPack |
Where-Object {$_.Sealed –eq $false}

$mps=Get-ManagementPack
Abbildung 9 Exportieren eines Management Packs (zum Vergrößern auf das Bild klicken)
Bearbeiten von Benutzerrollen Das Cmdlet „Get-UserRole“ bietet bestimmte Funktionen für das Verwalten von Benutzern, wird aber seltsamerweise nicht zusammen mit einem komplementären Set-Cmdlet bereitgestellt, und es wird (gemäß der Windows PowerShell SDK-Dokumentation) in der Regel nicht für Bearbeitungs- oder Aktualisierungsvorgänge verwendet. Wie Sie in Abbildung 10 sehen können, wird zuerst eine Liste der aktuellen Benutzerrollen abgerufen und dann der Gruppe der schreibgeschützten Operatoren ein Benutzer hinzugefügt (siehe Abbildung 11).
Abbildung 10 Anzeigen von Benutzerrollen (zum Vergrößern auf das Bild klicken)
Abbildung 11 Hinzufügen eines Benutzers (zum Vergrößern auf das Bild klicken)
Aktivieren der Überwachungssammeldienste (Audit Collection Services, ACS) ACS ist ein neues optionales Feature von Operations Manager 2007, das, kurz gesagt, ein zentralisiertes Verfahren für den Umgang mit Sicherheitsüberwachungsinformationen bietet. ACS ist standardmäßig nicht aktiviert und wird in der Regel in einer späteren Phase einer OpsMgr-Bereitstellung konfiguriert.
Wenn es an der Zeit ist, eine große Anzahl von Agents für ACS zu aktivieren, kann das Setup mithilfe von Windows PowerShell automatisiert werden. Während der Betaphase von OpsMgr stellte Microsoft ein Skript bereit, mit dem ACS für alle Agents aktiviert werden kann. Neale Browne, Autor und Blogger bei SystemCenterForum.org, hat dieses Skript weiterentwickelt und Unterstützung für zusätzliche Parameter hinzugefügt.
Auf der Website unter SystemCenterForum.org (eine Communitywebsite, auf der Microsoft® System Center-Lösungen bereitgestellt werden) wurden zwei verschiedene Windows PowerShell-Skripts zum Automatisieren des Setups von ACS zur Verfügung gestellt. Um alle Agents in einer bestimmten Gruppe einzurichten, verwenden Sie systemcenterforum.org/wp-content/uploads/ACSBulkEnableGroupDisplayName.zip. Um alle überwachten Agents einzurichten, laden Sie systemcenterforum.org/wp-content/uploads/ACSBulkEnableAllAgents.zip herunter.
Aktivieren der Proxyfunktion des Agent Ihre OpsMgr-Umgebung kann ohne Agents überwachte Geräte enthalten. Diese Geräte müssen einem Verwaltungsserver oder einem mit Agents verwalteten Gerät, das die Remoteüberwachung bereitstellt, zugewiesen werden. Eine ausführliche Beschreibung dazu, wie Sie mithilfe eines Windows PowerShell-Skripts eine große Anzahl von Agents konfigurieren können, finden Sie unter systemcenterforum.org/enable-agent-act-as-a-proxy-in-bulk-via-powershell. Eine aktualisierte Version des Skripts ist unter systemcenterforum.org/wp-content/uploads/SetAgentProxyBulk_FQDN.zip verfügbar.
Es gibt weitere Bedingungen, unter denen bestimmte Management Packs es erfordern, dass ein Agent auch für die Funktion als Proxy eingerichtet wird. Weitere Einzelheiten finden Sie in der Management Pack-Dokumentation.

Praxisbeispiele
Es folgen einige praktische Beispiele, um Ihnen zu zeigen, wie Ihnen Windows PowerShell bei der Automatisierung helfen kann.
Auflösen von Warnungen Mussten Sie jemals mehrere Warnungen für einen bestimmten Computer löschen? Vielleicht ist bei einer Anwendung ein Fehler aufgetreten, oder die Warnungen wurden nicht aktiv aufgelöst. Mit dem folgenden einzeiligen Befehl können alle Warnungen mit dem Auflösungsstatus „null“ aufgelöst werden:
Get-Alert –criteria 'ResolutionState = ''0''' |
Resolve-Alert | Out-Null
Im nächsten Beispiel wird das gleiche Ergebnis wie im ersten Beispiel erzielt, aber der Code wird in einer größeren Umgebung mit mehr ausstehenden Warnungen viel schneller ausgeführt:
Get-Alert | Where-Object {$_.ResolutionState -eq 0} |
Resolve-Alert | Out-Null
Der Grund für den Leistungsunterschied besteht darin, dass bei Verwendung des criteria-Parameters der übergebene Wert direkt an die SQL Server®-Datenbank weitergeleitet wird und nur die relevanten Daten zurückgegeben werden. Dadurch verringert sich die Zahl der Objekte, die an die Windows PowerShell-Konsole zurückgegeben werden müssen.
Jetzt verfügen Sie über eine schnelle Methode zum Entfernen aller ausstehenden Warnungen für einen Computer. In Abhängigkeit von Ihren Anforderungen können Sie festlegen, dass dieser Vorgang automatisch ausgeführt werden soll.
Mit dem folgenden kurzen Befehl können Sie alle Warnungen für einen bestimmten Tag anzeigen:
Get-Alert -criteria 'TimeRaised >= ''4/25/2008'''
Sie können den Datumswert problemlos ändern und die Ausgabe an das Cmdlet „Resolve-Alert“ weiterleiten.
Prüfen von Warnungen Manchmal ist es erforderlich, bestimmte Ereignisse in der Windows-Ereignisanzeige zu überwachen und auf sie zu prüfen. Durch die folgenden beiden Zeilen wird schnell ein Ereignisprotokolleintrag erstellt:
$api=New-Object -comObject MOM.ScriptAPI
$api.logscriptevent("API test",100,0,
  "Test using PowerShell")
Hierbei wird jedoch standardmäßig in das Operations Manager-Ereignisprotokoll geschrieben, das Sie wahrscheinlich nicht dahingehend überprüfen, ob ein bestimmtes Ereignis protokolliert wurde. Glücklicherweise hat Stefan Stranger, Premier Field Engineer bei Microsoft, ein Skript für das Erstellen von Ereignissen in der Windows-Ereignisanzeige geschrieben, das mehr Flexibilität hinsichtlich der Möglichkeit bietet, in ein bestimmtes Protokoll zu schreiben. Sie finden das Skript unter go.microsoft.com/fwlink/?LinkId=120308. (Stefan Stranger hat das Skript in einer .cab-Datei verpackt. Sie müssen die Datei herunterladen und dann mit der rechten Maustaste auf sie klicken, um das Skript zu extrahieren.)
Bei Stefan Strangers Skript müssen Sie lediglich beachten, dass der für die Ereignisquelle eingegebene Wert bestimmt, in welches Protokoll der Eintrag geschrieben wird. Die vielleicht einfachste Möglichkeit, um sicherzustellen, dass eine Warnung an das richtige Protokoll weitergeleitet wird, besteht darin, die Windows-Ereignisanzeige zu öffnen und nach der Quelle des neuesten Eintrags zu suchen.
Festlegen des Besitzers Manchmal kann es nützlich sein, den Besitzer einer Warnung automatisch festzulegen. Es folgt eine einfache Methode, mit der Sie diesen Vorgang von der Befehlsshell aus durchführen können:
$alert = Get-Alert
  -id f3f73d62-37ab-45ce-a7ff-2bdda0dfaeb4
$alert.set_owner("Administrator")
$alert.update("Updated owner")
Durch die erste Zeile dieses Codes wird die ID eines bestimmten Warnungsobjekts abgerufen und an die $alert-Variable übergeben. In der zweiten Zeile wird diese Variable zum Festlegen des Besitzers verwendet, und abschließend wird die Aktualisierung auf die OpsMgr-Datenbank angewendet. Wenn Sie den Besitzer der Warnung mit dem folgenden Befehl prüfen, werden Sie feststellen, dass er geändert wurde:
Get-Alert -id f3f73d62-37ab-45ce-a7ff-2bdda0dfaeb4 |
Select-Object Owner
Um den Besitzer für einen ganzen Satz von Warnungen festzulegen, könnten Sie den Code folgendermaßen vereinfachen:
Get-Alert | ForEach-Object {$_.Set_
  Owner("Administrator");
  $_.Update("Owner set")}
Wiederherstellen des Überwachungsstatus Wahrscheinlich haben Sie schon einmal Agents mit dem Status „Nicht überwacht“ gefunden. Wenn dies geschieht, müssen Sie möglicherweise alle Agents schnell wieder in den vollständig überwachten Zustand versetzen und dann versuchen festzustellen, was passiert ist. Wenn Sie das Skript in Abbildung 12 direkt von der Befehlsshell aus ausführen, sollte die vollständige Überwachung aller betroffenen Agents wiederhergestellt werden.
Abbildung 12 Zurücksetzen des Speichers für den Integritätsdienst
$all="Microsoft.SystemCenter.AllComputersGroup"
$agents = Get-ChildItem Microsoft.SystemCenter.AllComputersGroup | `
  Where-Object {$_.HealthState -eq 'Uninitialized'}
foreach ($agent in $agents)
{
$agent.DisplayName
Push-Location $all\$agent\Microsoft.SystemCenter.HealthService
Get-Task | Where-Object {$_.Name -eq "Microsoft.SystemCenter.ResetHealthServiceStore"} | `
    Start-Task -Asynchronous
Pop-Location
}
Betrachten Sie den Code in Abbildung 12. Nach dem Deklarieren einer Variablen wird eine Liste aller Agents auf diesem Stammverwaltungsserver abgerufen und nach den Agents gefiltert, bei denen anscheinend ein Problem vorliegt. Dann wird asynchron eine Aufgabe aufgerufen, die den Speicher für den Integritätsdienst für alle Agents in der gefilterten Liste zurücksetzt.
Zuordnen von Warnungen zu Management Packs In wird Abbildung 13 gezeigt, wie eine Liste aller neuen Warnungen sowie das Management Pack, dem die einzelnen Warnungen zugeordnet sind, abgerufen werden.
Der Code erforderte einige Tricks, um sicherzustellen, dass alle Management Pack-Namen aufgelöst werden konnten. Die verwendeten Cmdlets variieren in Abhängigkeit davon, ob die Warnung von einer Regel oder einer Überwachung stammt. (Beachten Sie, dass in Abbildung 13 eine kleine Problemumgehung für das Cmdlet „Get-Monitor“ implementiert werden musste. Ab OpsMgr SP1 unterstützt das Cmdlet jetzt einen neuen ID-Parameter, der den Code etwas vereinfachen würde.)
Abbildung 13 Suchen des Management Packs
Get-Alert | Where-Object {($_.PrincipalName -ne $null) -and ($_.ResolutionState = '0')}| `
Format-Table –autosize PrincipalName,Severity, `
  @{Label="MP"
      Expression={If(!($_.IsMonitorAlert)){
        ForEach-Object {
          ((Get-Rule $_.MonitoringRuleId).GetManagementPack()).DisplayName}
       }
       Else{
         ForEach-Object {
          $id=$_.ProblemId
          ((Get-Monitor -criteria "Id='$id'").GetManagementPack()).DisplayName}
         }
   }
}
Einfache Berichterstattung Wenn Sie Ihre Umgebung aktualisieren, kann es nützlich sein, die Versionen aller installierten Agents zu überprüfen. Sie benötigen nur ein einfaches Skript, um einen übersichtlichen Bericht auszugeben:
Get-Agent| `
Format-Table DisplayName,@{ `
  Label="Version"
  Expression={ `
    switch ($_.Version){
    "6.0.5000.0" {"RTM"}
    "6.0.6246.0" {"SP1 (RC)"}
    "6.0.6278.0" {"SP1 (RTM)"}
    }
  }
}
In Abbildung 14 wird die die Ausgabe des Skripts gezeigt. Dieses Skript ist eine erweiterte Version der Beispiele unter systemcenterforum.org/checking-operations-manager-2007-agent-and-server-versions-via-powershell.
Abbildung 14 Ausgabe, die die Versionen bestimmter Agents zeigt (zum Vergrößern auf das Bild klicken)
Planen einer Aufgabe Möglicherweise möchten Sie ein Windows PowerShell-Skript regelmäßig ausführen. Angenommen, Sie verwenden einen Clientcomputer, um eine Verbindung zu Ihrem OpsMgr-Server herzustellen und diesen zu verwalten, und Sie haben die OpsMgr-Verwaltungstools lokal installiert. Sie möchten den Bericht zur Agentversion täglich ausführen und die Ausgabe in einer Datei speichern, wobei das aktuelle Datum als Name der Datei verwendet werden soll. Mithilfe der in Windows integrierten Aufgabenplanung können Sie das Skript von Ihrem lokalen Computer aus ausführen.
Hierzu richten Sie einfach eine neue Aufgabe ein und setzen das Programm auf powershell.exe (in der Regel im Verzeichnis „C:\Windows\System32\WindowsPowerShell\v1.0“ gespeichert). Nachdem Sie die Aufgabe erstellt haben, bearbeiten Sie sie und legen den auszuführenden Befehl in etwa wie folgt fest:
C:\Windows\System32\WindowsPowershell\v1.0\powershell.exe
  –Command "& {& 'c:\agent_report2.ps1'}"
Es stellte sich heraus, dass an dem ursprünglichen Windows PowerShell-Code relativ viele Änderungen vorgenommen werden mussten, wie Sie in Abbildung 15 sehen können. Das PowerShell-Snap-In für OpsMgr musste hinzugefügt, das dem OperationsManagerMonitoring-Anbieter zugeordnete Monitoring-Laufwerk erstellt und eine Verbindung zum Stammverwaltungsserver hergestellt werden. Zudem wird das benutzerdefinierte Windows PowerShell-Skript für OpsMgr (Microsoft.EnterpriseManagement.OperationsManager.ClientShell.Startup.ps1) geladen, um OpsMgr-spezifische Funktionen zu laden.
Abbildung 15 Planen der Ausführung des Skripts für den Bericht zur Agentversion
Add-PSSnapin Microsoft.EnterpriseManagement.OperationsManager.Client
New-PSDrive Monitoring Microsoft.EnterpriseManagement.OperationsManager.Client\
  OperationsManagerMonitoring ""
New-ManagementGroupConnection Oxford.contoso.com

Set-Location 'C:\Program Files\System Center Operations Manager 2007'
./Microsoft.EnterpriseManagement.OperationsManager.ClientShell.NonInteractiveStartup.ps1

$file="C:\$(Get-Date -f `"MMddyyyy`").rpt"

Get-Agent -Path Monitoring:\Oxford.contoso.com | `
Format-Table DisplayName,@{ `
  Label="Version"
  Expression={ `
    switch ($_.Version){
    "6.0.5000.0" {"RTM"}
    "6.0.6246.0" {"SP1 (RC)"}
    "6.0.6278.0" {"SP1 (RTM)"}
    }
  }
} | Out-File $file
Das ist jedoch noch nicht alles. Sie stellen vielleicht fest, dass bei jeder Ausführung der Aufgabe ein schwarzes Konsolenfenster auf dem Bildschirm angezeigt wird, wenn ein Benutzer bei dem System angemeldet ist, auf dem das Skript ausgeführt wird. Sie können dies durch einen kleinen Trick vermeiden, der von Don Jones und Jeffery Hicks von Sapien unter blog.sapien.com/index.php/2006/12/26/more-fun-with-scheduled-powershell bereitgestellt wurde.
Im Grunde müssen Sie das Skript mit einem VBScript umschließen. Hierzu verwenden Sie ähnlichen Code wie den in Abbildung 16, statt mit Ihrer geplanten Aufgabe Folgendes aufzurufen:
C:\Windows\System32\WindowsPowershell\v1.0\powershell.exe
  –Command "& {& 'c:\agent_report2.ps1'}"
Abbildung 16 Ausblenden der Popupfenster
Dim objShell
Set objShell=CreateObject("WScript.Shell")

'enter the PowerShell expression you need to use short filenames and paths
strExpression="'c:\agent_report2.ps1'"

strCMD="powershell -nologo  -command " & Chr(34) & _
"&{&" & strExpression &"}" & Chr(34)

'Uncomment next line for debugging
'WScript.Echo strCMD

'use 0 to hide window
objShell.Run strCMD,0
Die Aufgabe verwendet jetzt das Programm „wscript.exe“, und der Aufruf würde in etwa wie folgt aussehen:
C:\WINDOWS\System32\wscript.exe C:\agent_report.vbs
Sie können nun automatisierte Berichte erstellen, und der Prozess wird vor angemeldeten Benutzern verborgen.

Zusammenfassung
In diesem Artikel wurden kurz die neuen Automatisierungsfeatures vorgestellt, die in OpsMgr 2007 verfügbar sind. Es wurde jedoch nur ein kleiner Teil der Möglichkeiten behandelt, die Ihnen Windows PowerShell für die OpsMgr-Verwaltung bietet.
Ich möchte mich bei allen in diesem Artikel genannten Personen sowie bei Pete Zerger, MVP für MOM und Gründer von SystemCenterForum.org, für ihre wertvolle Hilfe bedanken.

Marco Shaw ist als IT-Systemanalytiker bei einem kanadischen Telekommunikationsunternehmen tätig. Er arbeitet seit mehr als 10 Jahren in der IT-Branche und erhielt vor kurzem die MVP-Auszeichnung für Windows PowerShell. Marco Shaw ist zudem stellvertretender Communityleiter für die neue PowerShell-Communitywebsite unter powershellcommunity.org. Er führt einen Blog unter marcoshaw.blogspot.com.


Internetinformationsdienste
Skalieren von ASP.NET-Anwendungen: Gewonnene Erfahrungen
Richard Campbell
Auf einen Blick:
  • Die Bedeutung der Entwickler-/IT-Zusammenarbeit
  • Verständnis der wichtigsten Skalierungsstrategien
  • Weitergabe von Kenntnissen über Teams hinweg
  • Einigung auf einen Kernsatz an Kenntnissen

Inhalt
Grundlagen der Skalierung
Gedanken- und Erfahrungsaustausch
Was Netzwerkmitarbeiter von den Entwicklern wissen müssen
Was Entwickler von Netzwerkmitarbeitern wissen müssen
Rückkehr zum Skalieren
Kooperative Problemlösung
In meiner Rolle als Berater war jede erfolgreich skalierende ASP.NET-Anwendung, mit der ich je gearbeitet habe, das Ergebnis einer gemeinsamen Initiative zwischen Entwicklern (die sie erstellt haben) und Netzwerkmitarbeitern (die sie ausführen). Leider ist es nicht immer zu Beginn des Lebenszyklus einer Anwendung
absehbar, dass diese Zusammenarbeit notwendig ist. Daher habe ich fast nie Gelegenheit, zu Beginn des Lebenszyklus einer Anwendung involviert zu sein, sondern nur am bitteren Ende, wenn es Schwierigkeiten gibt.
Die schlichte Wahrheit ist, dass keine Anwendung direkt beim ersten Mal effizient skaliert – es ist unmöglich, alles direkt am Anfang fehlerlos hinzubekommen. Um eine Anwendung erfolgreich zu skalieren, müssen Sie verstehen, wie die Anwendung erstellt wurde und wie die Betriebsumgebung, unter der sie ausgeführt wird, funktioniert. Anders gesagt: Sie benötigen Informationen sowohl von den Entwicklern als auch den Netzwerkmitarbeitern. Ohne dieses geteilte Wissen kann es keinen Erfolg geben.

Grundlagen der Skalierung
Bevor wir uns näher mit der Materie auseinandersetzen, sehen wir uns einmal an, was genau die Skalierung einer ASP.NET-Anwendung beinhaltet. Es gibt hierfür zwei grundlegende Strategien, die in der Regel eingesetzt werden, und die meisten großen, skalierenden ASP.NET-Anwendungen wenden beide Strategien an. Außerdem lassen sich alle Regeln der Kunst, die Ihrer ASP.NET-Anwendung beim Skalieren behilflich sind, auf eine der beiden Strategien zurückführen.
Die Spezialisierung erfordert eine Trennung von Elementen der Anwendung, sodass sie unabhängig voneinander skaliert werden können. So können Sie beispielsweise dedizierte Abbildserver erstellen, statt dieselben Server zu verwenden, die die ASP.NET-Seiten rendern. Die optimale Konfiguration eines Abbildservers unterscheidet sich erheblich von einem ASP.NET-Server. Die Trennung Ihrer Abbildanforderungen vom Rest der Anwendung eröffnet die Möglichkeit, Ressourcen von Drittanbietern für das Abbildangebot zu verwenden. Der gleiche Ansatz kann für andere Ressourcendateien Anwendung finden.
Andererseits beinhaltet eine Verteilung die symmetrische Verbreitung der Anwendung über mehrere Server hinweg, was auch als Webfarm bezeichnet wird. ASP.NET-Anwendungen sind besonders für eine Verteilung geeignet, da jede einzelne Seitenanforderung relativ klein ist und die Interaktionen eines bestimmten Benutzers zum größten Teil unabhängig von anderen Benutzern sind. Die Verteilung ist in Wirklichkeit die Manifestation der Skalierungsphilosophie, in der mehrere Server mit mittlerer Leistung zusammenarbeiten, im Unterschied zum Skalierungsansatz, bei dem ein riesiger Server allein für alle Aufgaben verantwortlich ist.
Die Kombination von Spezialisierung und Verteilung erhöht die Effizienz – Sie müssen nur die Elemente der Anwendung verteilen, die eine zusätzliche Leistung erfordern. Wenn Sie beispielsweise spezialisierte Abbildserver erstellt haben, das Abbildangebot aber nach wie vor unzureichend ist, können Sie Abbildserver hinzufügen, statt Server für die gesamte Anwendung hinzuzufügen. Es ist wichtig, diese Strategien für eine Verbesserung der Leistung und Skalierbarkeit Ihrer ASP.NET-Anwendung zu bedenken.

Gedanken- und Erfahrungsaustausch
Während des Lebenszyklus jeder ASP.NET-Anwendung gibt es irgendwann einen Zeitpunkt, zu dem sich die Entwickler und die Netzwerk-/IT-Mitarbeiter treffen. Mit etwas Glück ist dies der Fall, bevor die Anwendung bereitgestellt wird, manchmal passiert dies aber erst, wenn ein Problem auftritt – beispielsweise, wenn die Anwendung in der Testumgebung einwandfrei funktioniert, daraufhin an die Benutzer gesendet wird und dort nur noch im Schneckentempo arbeitet. (Dies ist der Punkt, an dem Berater wie ich zu Rat gezogen werden.)
Wenn Entwickler und Netzwerkmitarbeiter aufeinander treffen, besteht das primäre Ziel darin, Informationen auszutauschen. Die Entwickler verfügen über wichtige Kenntnisse der Anwendung, so wie die Netzwerkmitarbeiter sich mit der Betriebsumgebung bestens auskennen. Jede Gruppe muss die Daten der anderen Gruppe verstehen, und je früher sie sich im Lebenszyklus der Anwendung treffen, desto besser.
Dieses Treffen sollte nicht erstmals bei einer Krise stattfinden. Ohne ein grundlegendes gegenseitiges Verständnis der beiden Teams ist es sehr schwer herauszufinden, weshalb die Anwendung nicht gemäß den Anforderungen funktioniert. Außerdem wäre es sehr einfach, sich zu rechtfertigen und die Schuld allein dem anderen Team zuzuweisen. Denn das entspricht einfach nie der Wahrheit – es sind immer beide Parteien für das Lösen eines sehr komplexen Problems erforderlich.
Selbst in guten Zeiten kann ein solches Treffen jedoch eine große Herausforderung sein. Jene, die ich organisiert habe, beginnen normalerweise mit den Netzwerkmitarbeitern auf der einen Seite und den Entwicklern auf der anderen. Daraufhin beäugt man sich zunächst gegenseitig skeptisch. Um eine Unterhaltung in Gang zu bringen, skizziere ich das Ziel des Treffens, insbesondere den Austausch von Wissen. Dabei ist es egal, wer damit anfängt. Ich beginne damit, was die Netzwerkmitarbeiter von den Entwicklern wissen müssen.

Was Netzwerkmitarbeiter von den Entwicklern wissen müssen
Jede ASP.NET-Anwendung hat ihre speziellen Eigenarten, aber es gibt ein paar wichtige Elemente, die in jedem Fall Anwendung finden. Die web.config-Datei ist eines dieser Elemente (siehe Abbildung 1). Web.config ist eine Schnittstelle zwischen Entwicklung und Netzwerk. Manchmal wird sie von den Entwicklern konfiguriert, manchmal von den Netzwerkmitarbeitern. In jedem Fall aber schränkt der Inhalt von web.config die Hardware- und Netzwerkkonfiguration ein und wirkt sich direkt auf den Betrieb der Anwendung aus. Die detaillierte Untersuchung jedes kleinen Aspekts der web.config-Datei würde schnell ein ganzes Buch füllen. Worauf es hier ankommt, ist, dass beide Gruppen sich mit der web.config-Datei befassen und sich darin einig sein müssen, was die von ihr dargestellte Konfiguration bedeutet und welchen Einfluss die verschiedenen Einstellungen auf die Anwendung und die Umgebung haben werden.
Abbildung 1 Einfache web.config-Datei mit einigen Anwendungseinstellungen und benutzerdefinierter Fehlerkonfiguration (zum Vergrößern auf das Bild klicken)
Der Abschnitt <authorization> der web.config-Datei legt beispielsweise fest, wie Benutzer in der Anwendung authentifiziert werden, und definiert damit eine Abhängigkeit. Wenn die Anwendung Windows®-Authentifizierung verwendet, hängt sie möglicherweise von Active Directory® ab. Wenn sie formularbasierte Authentifizierung verwendet, basiert die Abhängigkeit auf einem Datenspeicher mit Benutzerkonten. Das ist sicherlich eine Unterhaltung wert.
Der Abschnitt <customErrors> sollte erwähnt werden, da er sich darauf auswirkt, wie Fehler angezeigt werden. Dies ist keine komplizierte Einstellung, ist aber eine Untersuchung wert, um zu verstehen, wie die Fehlerseiten aussehen werden. Bei der Zusammenarbeit gibt es zu Beginn wahrscheinlich keine benutzerdefinierten Fehlerseiten – auch dies ist eine Unterhaltung wert.
Der Abschnitt <appSettings> von web.config kann besonders wichtig sein. An dieser Stelle speichern Entwickler üblicherweise globale Werte, wie Verbindungszeichenfolgen für Datenbanken. Dies ist eine großartige Quelle für Abhängigkeiten und ein wichtiger Bestandteil für das Planen von Failover, Migration und so weiter. Da der Abschnitt <appSettings> vollständig benutzerdefiniert ist, kann er nahezu alles enthalten und erfordert möglicherweise eine umfangreiche Erläuterung, um zu verstehen, was dort vorhanden ist. Häufig werden in diesem Abschnitt Waisen zurückgelassen – Werte, die nirgendwo in der Anwendung verwendet werden.
Selbst wenn Ihre Entwickler <appSettings> nicht verwenden, erwarten die Netzwerk-/Betriebsmitarbeiter dies möglicherweise dennoch von ihnen – mit allen Datenbankverbindungszeichenfolgen ist dies eine effiziente Möglichkeit, eine einfache Failoverstrategie zu erstellen. Wenn der Datenbankserver permanent fehlschlägt, kann eine Ersetzungszeichenfolge eingefügt werden, um auf einen anderen Datenbankserver zu verweisen. Ein früher Einsatz dieser Möglichkeit während des Entwicklungszyklus kann die Zuverlässigkeit und die Wartbarkeit der Anwendung erhöhen.
Abschließend sollten Sie beachten, dass ein extrem wichtiger Wert in web.config aus der Skalierungsperspektive das Tag <sessionState> ist, das bestimmt, wo Sitzungsdaten für die Anwendung gespeichert werden. Standardmäßig werden Sitzungsdaten in „InProc“ oder im Prozessbereich der ASP.NET-Anwendung gespeichert. Wenn die Sitzungsdaten prozessintern konfiguriert werden, bedeutet dies, dass jeglicher Lastenausgleich dafür sorgen muss, dass ein bestimmter Benutzer immer zum selben Server zurückgeleitet wird, auf dem sich die Sitzungsdaten befinden. Hierbei handelt es sich um ein extrem wichtiges Gesprächsthema zwischen Entwicklern und Netzwerkmitarbeitern, da es eine direkte Auswirkung auf die Art der Skalierung und auf die Art des Failovers hat. Ein frühzeitiges Gespräch zu diesem Thema kann das Debuggen der Anwendung erheblich erleichtern.
Wenn sich die Unterhaltung dem Sitzungsstatus zuwendet, ist es einfach, zu den Lastenausgleichsanforderungen der Anwendung im Allgemeinen überzugehen. Einige Umgebungen verfügen über dedizierte Lastenausgleichshardware mit bestimmten Features – wenn die Anwendung diese Features aber nicht verarbeiten kann, werden sie von geringer Bedeutung sein. Ich habe Situationen erlebt, in denen Hardwarelastenausgleich mit einer ASP.NET-Anwendung verwendet wurde, die über prozessinterne Sitzungsdaten verfügte. Die Folge waren gelegentlich verlorene Sitzungen ohne Erklärung. Es sah ganz nach einem Fehler in der Anwendung aus, der aber keiner war – es handelte sich um einen Konfigurationsfehler.
Die Netzwerkmitarbeiter müssen von den Entwicklern klare Informationen dazu erhalten, welche konkreten Lastenausgleichsmaßnahmen für die Anwendung funktionieren werden. Hier handelt es sich um ein wechselseitiges Gespräch darüber, welche Lastenausgleichsmaßnahmen verfügbar sind und was die Anwendung tolerieren kann. Ein wesentlicher Vorteil eines frühen Gesprächs im Lebenszyklus der Anwendung ist, dass Sie im Voraus eine prozessexterne Lastenausgleichsmaßnahme ohne Affinität planen könnten.
Bis eine ASP.NET-Anwendung für die Bereitstellung bereit ist (oder sich bereits in ihrer anfänglichen Bereitstellung befindet), werden die Entwicklungsmitarbeiter ziemlich genau wissen, welche Anwendungsbereiche schnell und welche langsam sind. Vor allem werden sie die Engpässe oder potentiellen Krisenpunkte im System kennen. Wenn das Netzwerk-/Betriebsteam diese Engpässe kennt, kann es sich auf Probleme vorbereiten und diese möglicherweise sogar ganz abwenden.
Beispielsweise habe ich einmal mit einer Anwendung gearbeitet, die während der Ausfallzeit jede Nacht einen gewaltigen Datenladeprozess beinhaltete. Die Entwickler haben den Datenladeprozess erstellt und getestet und verstanden seine Funktionsweise. Sie wussten, dass dies für die Datenbank sehr anstrengend war, aber auch, dass es effektiv war und eine gute Möglichkeit zur Lösung des Problems darstellte.
Sie haben es aber versäumt, das Netzwerkteam davon unterrichten, dass dieser Prozess stattfand oder dass sie die Ausführung der Datenbanksicherungen für genau 1 Uhr morgens eingerichtet hatten. Die Datenbank blieb online, lief aber sehr viel langsamer während der Sicherungszeit, da alle Transaktionen, die an die Datenbank gesendet wurden, im Transaktionsprotokoll festgehalten wurden.
Der Konflikt wurde erst durch die Kombination aus Laden der Daten und gleichzeitiger Sicherung identifiziert, die dazu führte, dass das Datenbank-Transaktionsprotokollvolume nicht mehr über genügend Speicherplatz verfügte. Eine Verschiebung des Beginns das Ladens der Daten auf 3 Uhr morgens löste das Problem vollständig, aber erst nach mehreren Krisentagen.
Ein frühes Gespräch über diese Arten der Arbeitsauslastungselemente in Ihrer Anwendung kann Ihnen eine Unmenge an Ärger zu einem späteren Zeitpunkt ersparen.

Was Entwickler von Netzwerkmitarbeitern wissen müssen
Mein bevorzugter Ausgangspunkt für den Teil des Treffens, bei dem die Netzwerkmitarbeiter den Entwicklern ihre Welt erklären, ist das Netzwerkdiagramm. Viel zu häufig sehen die Entwickler das Netzwerk wie in Abbildung 2 – d. h. kein Netzwerk, sondern lediglich Webserver, Browser und das Internet.
Abbildung 2 Einfaches Netzwerk aus Sicht des Entwicklers (zum Vergrößern auf das Bild klicken)
Die Realität ist selbstverständlich sehr viel komplizierter. Ein Diagramm wie Abbildung 3 entspricht schon eher der Wahrheit, auch wenn es ebenfalls vereinfacht ist. Wenn Sie Abbildung 3 betrachten, stellen sich sofort mehr Fragen, wie z. B. „wie arbeiten die Benutzer eines virtuellen privaten Netzwerks mit der Anwendung“ oder „was ist der Authentifizierungsunterschied zwischen einem internen Benutzer und einem öffentlichen Benutzer“ und so weiter.
Abbildung 3 Das tatsächliche Netzwerk, das die Entwickler verstehen müssen (zum Vergrößern auf das Bild klicken)
Natürlich reicht es nicht aus, einfach ein Netzwerkdiagramm bereitzustellen. Es ist auch wichtig, das Netzwerk im Detail darzustellen, da es durch bloße Ansicht eines Diagramms sonst nicht möglich ist vorherzusehen, welche Elemente sich auf die Anwendung auswirken werden. Sie müssen den tatsächlichen Verbindungsprozess eines öffentlichen Benutzers, eines VPN-Benutzers und eines internen Benutzers erklären. Eine Diskussion der verschiedenen vorhandenen Firewallregeln, insbesondere in komplexeren Netzwerkarchitekturen im DMZ-Stil, wird selbstverständlich potenzielle Probleme der Anwendung ans Licht bringen.
Natürlich wäre es von Vorteil, diese Diskussionen zu führen, bevor die Anwendung bereitgestellt oder sogar gestartet wird, aber diese Diskussion muss in jedem Fall irgendwann stattfinden, und es ist wichtig, dass alle bei einem Treffen versammelten Personen das gesamte Netzwerkdiagramm verstehen.
Netzwerke sind auch der Schauplatz für Failover- und Redundanzmodelle, aber ohne jegliche Softwareunterstützung oder zumindest die Kenntnis des Verhaltens funktionieren diese Modelle selten wie geplant. Es muss eine detaillierte Diskussion darüber stattfinden, wie unterschiedliche Fehlschlagszenarios aussehen können. Wenn in der Datenbank Clustering eingerichtet ist, wirkt sich dies auf Code aus, der mit dem Zugriff auf die Datenbank in Zusammenhang steht. Können die Abfragen z. B. nach einem Serverwechsel den Vorgang wiederholen? Wenn eine redundante Site vorhanden ist, wie werden dann Daten auf der Site repliziert? Wie erfolgt ein Wechsel von einer Site zur anderen?
Auch hier hilft eine frühzeitige Unterhaltung, aber besser spät als nie – alle, die an der Anwendung beteiligt sind, müssen diese Prozesse verstehen. Es gibt nichts Frustrierenderes, als über eine Failoverlösung zu verfügen, die nicht funktioniert, wenn sie wirklich gebraucht wird.
Schließlich gibt es noch eine weitere wichtige Netzwerkressource, die diskutiert werden muss, und zwar Produktionsprotokolle. Ich empfehle immer, dem Entwicklungsteam Produktionsprotokolle zur Verfügung zu stellen. Die übliche Reaktion der Netzwerkmitarbeiter auf diese Anfrage ist „Fragen Sie mich danach, und ich schicke sie Ihnen“. Ich denke nicht, dass dies ausreicht. Es ist sehr viel effektiver, Entwicklern die Möglichkeit zu geben, die Protokolle selbst abzurufen, normalerweise von einer Sicherungssite.
Produktionsprotokolle sind in einer Krise unverzichtbar. Sie sind häufig die beste (und einzige) Quelle echter, empirischer Daten darüber, was tatsächlich passiert ist. Sie sind aber gleichermaßen wertvoll unter gewöhnlicheren Umständen. Wenn Entwickler generellen Zugriff auf Produktionsprotokolle haben, können sie dadurch prüfen, wie sich ein neues Feature verhält. Dies ist eine großartige Methode, um herauszufinden, dass Ihr Feature sich nicht wie erwartet verhält, und das Problem zu beheben, bevor es sich zu einer Krise entwickelt. Wenn alle Zugriff auf Protokolle haben, können Sie schneller auf Probleme reagieren und sie frühzeitiger lösen.

Rückkehr zum Skalieren
Bei einem Treffen der Netzwerkmitarbeiter und Entwickler geht es darum, die vollständige Bandbreite der Probleme zu verstehen, die beim Skalieren einer ASP.NET-Anwendung auftreten können. Die tatsächliche Umgebung, in der die Anwendung läuft, wirkt sich direkt darauf aus, wie der Code, der die Anwendung ausführt, funktioniert. Alle Strategien in Bezug auf das Skalieren wirken sich auf das Verhalten in der Umgebung aus. Das Anwenden einer Spezialisierungsstrategie wie z. B. die Herausnahme der SSL-bezogenen Bestandteile der Anwendung erfordert möglicherweise Änderungen der Netzwerkumgebung und der Server selbst.
Selbst eine offensichtlich codezentrierte Änderung wie die Verwendung von Zwischenspeicherung kann sich auf die Umgebung auswirken. Der Grund hierfür ist, dass, wenn Sie die Zwischenspeicherung von Daten Ihrer ASP.NET-Anwendung hinzufügen, Sie die Zahl der Datenbankaufrufe im Tausch gegen eine erhöhte Speicherauslastung verringern. Als Folge daraus müssen Sie möglicherweise die Zahl der ASP.NET-Server, die Sie benötigen, erhöhen, oder die Zahl der Arbeitsthread-Recyclevorgänge auf den Servern erhöhen, was Ereignisse auf der Seite der Netzwerküberwachung auslösen würde.
Das Skalieren Ihrer ASP.NET-Anwendung hat sowohl Auswirkungen auf die Entwicklung als auch auf die Netzwerkmitarbeiter – daher lohnt es sich, beide Gruppen in den Entscheidungsfindungsprozess einzubeziehen. Häufig führt die Zusammenarbeit zu originellen Lösungen, die die Teams unabhängig voneinander nicht finden würden. Zum Beispiel kennen Netzwerkmitarbeiter möglicherweise vorhandene Hardwarelösungen innerhalb des Unternehmens, die den Entwicklern helfen können, den Leistungs- und Skalierungsanforderungen gerecht zu werden. Eine Besprechung der Anwendungs- und Umgebungsdetails fördert diese Möglichkeiten zutage.

Kooperative Problemlösung
Ressourcen für das Skalieren von ASP.NET-Anwendungen

  • Entwickeln von Hochleistungs-ASP.NET-Anwendungen
  • Gewusst wie: Skalieren von .NET-Anwendungen
  • Gewusst wie: Abstimmen und Skalieren der Leistung von auf .NET Framework basierenden Anwendungen
  • Implementieren einer skalierbaren Architektur
  • Maximieren der IIS-Leistung
  • Skalierungsstrategien für ASP.NET-Anwendungen
Eine Krise beim Skalieren ist nicht notwendigerweise schlecht – sie ist normalerweise sogar positiv zu werten, da sie von zu vielen Benutzern verursacht wird, die Ihre Anwendung ausführen wollen, was den Wert der Anwendung unter Beweis stellt! Jetzt müssen Sie sie allerdings zum Laufen bringen.
Manchmal werden Skalierungskrisen durch ein anderes Ereignis verursacht – vielleicht führt Ihr Unternehmen gerade eine Werbeaktion durch, oder es wurde ein Blog über Sie geschrieben, oder eine Website für soziale Netzwerke hat gleichzeitig eine große Anzahl von Benutzern auf Ihre Website verwiesen. Auf einmal haben Sie alle Hände voll zu tun, die Anwendung am Laufen zu halten. Wie Sie sich denken können, ist es ratsam, dieses Szenario durchzuspielen, bevor es tatsächlich eintritt. Eine Vorführung, wie eine Zusammenarbeit einem Unternehmen bei der Bewältigung einer solchen Krise helfen kann, ist eine großartige Möglichkeit, ihr Treffen von Entwicklern und Netzwerkmitarbeitern zu beenden.
Die erste Frage zur Bewältigung der Krise lautet „Wie können wir feststellen, dass die Site unter der Last zusammenbricht?“ Die Antwort ist allzu häufig: „Wir bekommen einen Anruf vom CTO.“ Wenn das erste Zeichen dafür, dass Ihre Website in Schwierigkeiten ist, ein externer Anruf ist, haben Sie ein Problem. Eine vernünftige Messung sollte Sie über Probleme informieren, bevor das Telefon klingelt. Das wird zwar nicht das Klingeln Ihres Telefons verhindern, aber Ihnen zumindest einen Vorsprung dafür geben, Ihre Antwort zu finden. Eine ahnungslose Reaktion dem CTO gegenüber wirkt sich wahrscheinlich nicht gut auf die Karriere aus.
Nächste Frage – wer wird zuerst angerufen? Wer reagiert auf das Ereignis? Häufig erhält ein Netzwerkmitarbeiter eine erste Warnung, und diese Person ist möglicherweise relativ unerfahren. Daher muss ein klarer Eskalationsplan vorhanden sein. Wer wird als Nächstes angerufen? Die Herausforderung besteht darin, eine frühe, schnelle Diagnose zu stellen, um die Art des aktuellen Problems zu ermitteln. Wenn es ein Netzwerkausfall ist, ist das eine Sache. Wenn es aber ein Skalierungsproblem ist, ist das etwas ganz anderes. Bei Skalierungsproblem ist es ratsam, jemanden aus dem Entwicklungsteam frühzeitig zu Rate zu ziehen.
Alle an der Problemlösung Beteiligten benötigen detaillierte Informationen. Daher ist effektiver Zugriff sehr wichtig. Das Ziel besteht darin, so viele Informationen wie möglich zu verbreiten, damit eine effektive Diagnose gestellt werden kann. Dies sollte letztlich den Umfang der Lösung bestimmen.
Wenn die einzige Lösung im Schreiben von Code besteht, ist das Ereignis häufig bereits vorüber, bevor der Code geschrieben werden kann. Selbstverständlich sollte das Ereignis notiert werden, um Entwicklungsprioritäten für die Zukunft aufzustellen. Es ist aber nicht vertretbar (oder klug) zu versuchen, eine Menge Code zu schreiben und diesen ohne vorheriges gründliches Testen in Produktion zu geben. Regel Nr. 1 einer jeden Problemlösung – machen Sie die Lage nicht noch schlimmer.
Bei Skalierungsproblemen liegt die Lösung manchmal darin, einfach abzuwarten. Diese Entscheidung kann aber immer noch getroffen werden.
Gleichzeitig bedeutet die Planung für eine dieser Eventualitäten, dass verschiedene Techniken schnell angewendet werden können. Die Einbringung sowohl von Netzwerk- als auch von Entwicklungsressourcen zur Lösung eines Skalierungsproblems führt häufig erstaunlich schnell zu einem Ergebnis, vielleicht sogar so schnell, dass die Werbeaktion umso mehr zu einem Erfolg wird.
Zusammenfassend lauten die aus Netzwerksicht gewonnenen Erfahrungen, dass eine hochskalierende, leistungsstarke ASP.NET-Anwendung das Ergebnis einer erfolgreichen Zusammenarbeit der Anwendungsentwickler sowie derjenigen, die sie bereitstellen und bedienen, ist.
Die Zusammenarbeit ist unvermeidlich. Daher ist es ratsam, früh mit Treffen zwischen den Teams zum Austausch von Informationen zu beginnen. Das Ziel der Treffen ist die Entwicklung eines Verständnisses sowie die Einigung hinsichtlich aller Elemente der Anwendung, was sie leistet, wie sie funktioniert, wovon sie abhängt, wie sie unter Belastung arbeitet und wie sie mit Problemen, die mit der Zeit entstehen, fertig wird.
Wenn diese Zusammenarbeit wirklich effektiv ist, ist das Ergebnis ein flexibleres Unternehmen, das schnell auf Probleme reagieren kann und das klare Ziele hinsichtlich der Anforderungen der Anwendung festlegen kann, um in Zukunft erfolgreich zu sein.

Richard Campbell ist Microsoft Regional Director, ein MVP für ASP.NET und Mitmoderator von .NET Rocks, der Internet-Audiotalkshow für .NET-Entwickler (dotnetrocks.com). Er hat Jahre mit der Beratung von Unternehmen in Bezug auf die Leistung und Skalierung von ASP.NET verbracht und ist außerdem einer der Mitbegründer von Strangeloop Networks.


Mitteilung der Redaktion: Live von der Tech•Ed
Joshua Hoffman

Es ist immer etwas schwierig, wenn ich mich jeden Monat hinsetze, um die „Mitteilung der Redaktion“ zu schreiben. Ein Thema zu finden, ist ja normalerweise nicht sehr schwer, denn es gibt immer viele interessante Dinge, über die man reden kann. Nein, das Problem liegt darin, dass die Mitteilung der Redaktion ungefähr sechs Wochen im Voraus geschrieben werden muss, bevor sie überhaupt von jemandem gelesen wird. Dies liegt zum Teil daran, dass wir dadurch genug Zeit haben, um das Magazin drucken zu lassen, aber der Hauptgrund ist, dass dadurch den Korrektoren genügend Zeit bleibt, um alle meine Fehler zu beseitigen. Im Unterschied zu Blogs, die ganz auf den Augenblick reagieren können, ist es unter diesen Bedingungen schwer, von „Neuigkeiten“ zu reden, denn wenn Sie diese Neuigkeiten lesen, sind es längst keine Neuigkeiten mehr.
Trotzdem bin ich hier auf der Tech•Ed 2008 im „sonnigen“ Orlando, dem wichtigsten Ereignis, das in diesem Augenblick auf der Welt stattfindet. Daher mag das, was ich schreibe, zwar ein wenig veraltet sein, wenn Sie es lesen, aber ... na ja, das ist schwer auszudrücken.
Die Tech•Ed ist aus mehreren Gründen eine aufregende Veranstaltung. Einerseits ist sie für uns eine der ganz wenigen Gelegenheiten im Jahr, so viele unserer Leser (und sogar unserer Autoren) von Angesicht zu Angesicht sehen zu können! Wir haben das Vergnügen, per E-Mail, per IM sowie per Telefon miteinander in Verbindung zu treten, aber es geht nichts über die fantastischen Ideen und die interessanten Unterhaltungen, die aus der Zusammenkunft so vieler Menschen entstehen.
Die Tech•Ed bietet auch eine herrliche Gelegenheit, einen Blick auf das nächste Jahr zu werfen. Auf der Tech•Ed werden die Führungskräfte der Unternehmen ihre langfristigen Strategien darlegen, was mit Sicherheit sehr informativ sein wird. Wir werden viel über neue Richtungen in der Virtualisierung, die nächste Generation des Web, revolutionäre Konzepte in der Systemverwaltung und viele weitere Themen erfahren.
Es sind jedoch die wirklich harten Themen, die mich hierher ziehen. Mark Russinovich, ein technischer Mitarbeiter von Microsoft und ein beitragender Redakteur, wird über das Umdefinieren von Sicherheitsgrenzen sprechen. Steve Riley, ein weiterer beitragender Redakteur, wird sogar über das gänzliche Verschwinden der Netzwerkbegrenzungen reden – ein ganz besonders aufregendes und innovatives Konzept! Mark Minasi, Romi Mahajan, Dharmesh Godha und ich werden eine Podiumsdiskussion über die Verbraucherorientierung der Informationstechnologie führen.
Ich werde auch darüber reden, was Sie tun müssen, wenn Sie für das TechNet Magazin schreiben möchten. Diese Präsentation, die ich in den letzten Jahren immer wieder gern halte, hat schon so manchen neuen Autor inspiriert. Wenn Sie diesen Text hier lesen, sind die Dias von meiner Rede bereits in unserem Blog unter blogs.technet.com/tnmag veröffentlicht, wo Sie sie gern betrachten dürfen. Wer weiß? Vielleicht werden Sie im nächsten Jahr als einer unserer Autoren bei der Tech•Ed dabei sein!
Ach, und die Tech•Ed-Partys wollen wir auch nicht vergessen. Auch wir lieben die Partys.
– Joshua Hoffman

Unser Dank gilt folgenden technischen Experten von Microsoft: Sunil Agarwal, Eric Charran, Trina Gorman, Sanjeev Nair, Isaac Roybal, Jez Sadler, Roger Sprague, Stefan Stranger, Kevin Sullivan, Jim Truher, Alan von Weltin, Michael Walsh und Buck Woody.


Briefe Leser sagen ihre Meinung

SharePoint-Inhaltstypen
Ich suche nach Informationen, die mir einen guten Einblick in die Verwendung von Inhaltstypen in Microsoft® SharePoint® bieten. Wo gibt es diese Informationen?
– E.A.

Eine geeignete Informationsquelle ist der Teamblog zu Microsoft SharePoint-Produkten und -Technologien (unter blogs.msdn.com/sharepoint), und Pav Cherny hat einen Artikel über die Standardisierung der Datenverwaltung mit benutzerdefinierten Inhaltstypen geschrieben, der unter technet.microsoft.com/magazine/cc194408 zu finden ist. Es gibt ein Whitepaper zur Verwaltung von Unternehmensmetadaten, das Sie möglicherweise hilfreich finden werden, verfügbar unter technet.microsoft.com/library/cc262729.
Eine weitere Ressource, die Sie sich ansehen können, ist Andrew Mays Blog unter blogs.msdn.com/andrew_may. Andrew May ist Programmierer und Autor bei Microsoft und verantwortlich für das Schreiben der Entwicklerdokumentation für die Features zum Verwalten von Unternehmensinhalten in Windows® SharePoint Services 3.0 und Microsoft Office SharePoint Server 2007. Er schreibt über Inhaltstypen und bietet Poster mit technischen Darstellungen, die sich mit Inhaltstypen befassen und die komplizierteren Aspekte der Unternehmensinhaltsverwaltung in einer SharePoint-Umgebung erklären.

Anspruchsvollere Sicherheitsmaßnahmen
Ich fand den Artikel „Die große Debatte: Sicherheit durch Verschleierung“ (Juni 2008, technet.microsoft.com/magazine/cc510319) großartig. Ich war jedoch leicht enttäuscht, dass hier lediglich die Änderung des Administratornamens behandelt wurde. Ich stimme überwiegend Roger Grimes und Aaron Margosis in Bezug auf die Debatte um den Administratornamen zu, denn ich bin auch der Meinung, dass dieser Ansatz besser als nichts ist und das geringste Potenzial zeigt, Verwaltungsprobleme zu verursachen. Es gibt jedoch sehr viel schwierigere Herausforderungen – Administratorfreigaben wurden erwähnt, aber von der Gruppe nicht im Detail behandelt, und dass es zu ernsthaften Verwaltungsproblemen kommen kann, wenn diese gesperrt sind.
Ich würde es außerdem begrüßen, wenn diese Gruppe die Vor- und Nachteile der Versuche diskutiert, die „Angriffsfläche zu verringern“. Die Verringerung der Angriffsfläche ist eine abgewandelte Variante der Sicherheit durch Verschleierung, denn das meiste, das von Leuten entfernt wird, soll all das vermeiden, das den Standort oder die Identität preisgibt. Ich habe z. B. viele Kunden, die im Namen der Sicherheit durch Verschleierung IPv6 entfernen. Die Entfernung von Diensten ähnelt häufig den Praktiken mittelalterlicher Ärzte: Augen zu, hineingreifen und darauf hoffen, dass es den Patienten nicht umbringt.
– Shelly B.

Wir stimmen Ihnen hinsichtlich der Konzentration auf die Änderung des Administratornamens vollständig zu. Frühere Entwürfe enthielten eine Reihe weiterer Beispiele, aber der Artikel wäre 20 Seiten lang geworden, wenn wir ihn nicht gekürzt hätten! Wir haben daher ein Beispiel gewählt, um uns auf dieses zu konzentrieren, und das Administratorkontoproblem scheint das am häufigsten erwähnte zu sein. Aber keine Sorge – wir haben die Autoren bereits darauf angesetzt, in naher Zukunft mehr zu diesem Thema zu schreiben.

Nicht verschleiernd genug
„Die große Debatte: Sicherheit durch Verschleierung“ war ein guter Artikel. Während ich darüber nachgedacht habe, wurden mir zwei Dinge klar. Erstens bin ich der Meinung, dass, solange die Rendite dank Verschleierung hoch genug ist, die Verschleierung zu befürworten ist. Zweitens habe ich festgestellt, dass ein Großteil der IT-Sicherheit schon immer über eine Verschleierungskomponente verfügte.
So zum Beispiel Kennwörter. Diese wurden mit der Zeit mehr und mehr verschleiert. Früher war es auf den meisten PCs nicht notwendig, ein Kennwort zu haben. Als Computer vermehrt verbunden wurden, war ein einfaches Kennwort ausreichend. Mit steigender Konnektivität wurde ein Kennwort mit mindestens 8 Zeichen erforderlich. Als das nicht mehr sicher genug war, wurde zu gemischten Zeichen und dann zu Kennsätzen übergegangen. Ich vermute, dass wir in Zukunft feststellen werden, dass unsere alten verschleiernden Schutzmaßnahmen nicht mehr verschleiernd genug sind.
– Tom B.

Vielen Dank, Tom, für die sehr fundierten Kommentare. Es wird interessant sein zu sehen, wie sich dieser Trend weiterentwickelt, insbesondere im Hinblick darauf, dass Sicherheitskonzepte, wie z. B. mehrstufige Authentifizierung (etwa Smartcards plus Kennwörter), immer häufiger werden.

TechNet Magazin-Poster
Ich würde gern die Microsoft-Poster, die ein paar Ausgaben des TechNet-Magazins beigelegt waren, für die Entwickler in meinem Unternehmen anfordern. Können Sie mir mitteilen, wo diese erhältlich sind?
– Helen G.

Die drei verfügbaren Poster sind: Microsoft Exchange Server 2007-Komponentenarchitektur, Windows Server® 2008 Active Directory®-Featurekomponenten und Windows Server 2008-Featurekomponenten. Sie können diese in den USA und in Kanada unter 800-444-4881 sowie in allen anderen Ländern unter 785-838-7500 erwerben.


Toolbox Neue Produkte für IT-Experten
Greg Steen

Überwachen Sie Ihre Server
PA Server Monitor Pro
poweradmin.com/servermonitor
Sie müssen alle Teile Ihrer Infrastruktur im Auge behalten. Zu wissen, dass etwas nicht stimmt, bevor Ihre Endbenutzer es wissen, ist für die Schadenskontrolle und die Schadensmeldung von entscheidender Bedeutung. (Außerdem macht es nicht viel Spaß, den Chef im Nacken zu haben.) Das Tool „PA Server Monitor Professional Edition“ von Power Admin LLC kann Ihnen helfen, Ihre Serverinfrastruktur im Auge zu behalten.
PA Server Monitor zu implementieren und in Gang zu setzen, ist ganz einfach, zumal der integrierte intelligente Konfigurationsprozess der Anwendung die an Ihr LAN angeschlossenen Computer erkennen und für jeden erkannten Computer automatisch eine Gruppe von Überwachungen konfigurieren kann. Wenn Sie den Erkennungsprozess vermeiden möchten, können Sie eine Liste der Computer importieren, für die Überwachungsüberprüfungen konfiguriert werden sollen. Sobald Sie einen Computer konfiguriert haben, können Sie diese Konfiguration über die grafische Benutzeroberfläche exportieren, um sie als Vorlage für andere Computer wiederzuverwenden oder um eine Sicherungskopie zu erstellen, falls einmal eine Neuinstallation notwendig sein sollte.
PA Server Monitor stellt 18 verschiedene Überwachungen bereit, die Sie jedem Ihrer Server zuweisen können. Diese Überwachungen beinhalten Standardüberprüfungen wie z. B. die Überwachung von Speicherplatz, Ereignisprotokollfehlern, Remoteskriptausführung, Datei- und Verzeichnisänderungen, CPU- und Speicherauslastung, Internet Control Message Protocol (Ping)-Antwort und Windows®-Dienststatus.
Es gibt verschiedene andere sehr nützliche Überwachungen wie z. B. die TCP-Port-Überwachung, die den Portstatus prüfen und auch Befehlstext senden und die Reaktion darauf anhand eines vorher festgelegten Werts überprüfen kann. Durch Protokolldateiüberwachung kann eine Protokolldatei auf das Vorhandensein eines Texts überprüft werden, den Sie als regulären Ausdruck oder als einfachen Text festlegen können. Mit einer Verzeichniskontingentüberwachung können Sie sicherstellen, dass Endbenutzer ihre Beschränkungen nicht überschreiten, und Benutzer per E-Mail benachrichtigen lassen, sobald sie Kontingente überschreiten. Sie können die Skriptausführung aller benutzerdefinierten Aufgaben überwachen, die Sie ausführen möchten. Außerdem können Sie durch eine Dateialterüberwachung Ihre E-Mail-Warteschlange beobachten, um sicherzustellen, dass keine Sicherung dieser Warteschlange erstellt wird.
Nachdem Sie eine Überwachung für einen Server definiert haben, müssen Sie eine Aktion definieren, die ausgeführt werden soll, sobald der Schwellenwert der Überwachung erreicht ist. PA Server Monitor bietet 15 integrierte Aktionen einschließlich E-Mail, Ereignisprotokollierung, Meldungsfeldern, Protokolldateien, Neustart von Diensten, SNPP (Simple Network Paging Protocol) sowie benutzerdefinierten Skripts für benutzerdefinierte Aktionen. Beim Definieren von Aktionen können Sie auch eine Aktionsausweitungskette definieren, damit zusätzliche Aktionen ausgeführt werden, falls die Überwachung über einen festgelegten Zeitraum hinaus in einem Fehlerzustand verharrt. Sie könnten beispielsweise eine Aktion einrichten, mit der Ihre Website zunächst automatisch neu gestartet wird. Wenn die Überprüfung jedoch nach weiteren fünf Minuten erneut fehlschlägt, wird eine E-Mail zu Ihrem tragbaren Gerät gesendet, um Sie über den Status der Website zu informieren.
Mit der Zeit werden Sie wahrscheinlich statistische Werte zu Ihren konfigurierten Überwachungen sehen wollen. PA Server Monitor besitzt integrierte Berichterstattungsfeatures, die Ihnen helfen, die Informationen abzurufen, die Sie benötigen. Integrierte Berichte enthalten eine Serverübersicht, die Ihnen statistische Werte zu einem bestimmten Server und seinem Zustand, eine allgemeine Übersicht mit einzeiligen Angaben zu jedem Ihrer überwachten Computer sowie eine grafische Statuskarte mit Statusindikatoren für geografisch verteilte Konfigurationen bietet. Berichte werden im HTML-Format generiert, damit über einen Webbrowser auf sie zugegriffen werden kann, was Ihrer Zentrale eine netten Touch gibt. Zusätzlich können Sie auch Ad-hoc-Berichte mit einfachen Grafiken und Diagrammen generieren oder Berichte zur späteren Wiederverwendung in eine CSV-Datei exportieren. Berichte können auch zeitlich geplant werden, wodurch Sie die Anwendung dafür konfigurieren können, Ihnen automatisch die aktuellen statistischen Werte Ihrer Server per E-Mail zu senden.
PA Server Monitor verwendet keinen Agent. Einer der Vorteile davon ist, dass Sie schnell alles in Gang setzen können, sofern der Dienstkontext für die Anwendung mit genügend Autorität ausgeführt wird, um eine Verbindung zu Computern in Ihrem Netzwerk herzustellen und WMI (Windows Management Instrumentation, Windows-Verwaltungsinstrumentation) und andere Remoteverwaltungsdienste wie z. B. RPC (remote procedure call, Remoteprozeduraufruf) auszuführen. Einer der Nachteile liegt jedoch in der erhöhten Kontoebene, die Sie benötigen, um eine Verbindung zu den Remotecomputern herzustellen. Natürlich gibt es auch andere Arten von Serverprotokollüberwachungen einschließlich HTTP und SMTP, die diese erhöhten Berechtigungen nicht erfordern.
Ein weiterer potenzieller Nachteil besteht darin, dass das Herstellen einer Verbindung zu Computern über eine komplexe und verteilte Infrastruktur und Netzwerktopologie hinweg schwierig sein kann und vom Domänen- und Netzwerkvertrauen abhängig ist. Ob dieses ohne Agent operierende Verfahren für Ihre Umgebung geeignet ist, hängt also letzten Endes vom Layout Ihrer Infrastruktur sowie davon ab, was Sie mit Ihrer Serverüberwachungslösung im Einzelnen tun möchten.
Preis: 99 $ (im Direktversand) für 20 aktive Überwachungen oder 349 $ (im Direktversand) für 100 aktive Überwachungen.
Behalten Sie mit PA Server Monitor Professional Edition Ihre Server im Auge (zum Vergrößern auf das Bild klicken)

Räumen Sie mit doppelten Dateien auf
dupeGuru
hardcoded.net/dupeguru
Wenn Sie mit Endbenutzern arbeiten oder freigegebenen Benutzerspeicherplatz verwalten, haben Sie zweifellos schon bemerkt, dass der Benutzerspeicherplatz im Laufe der Zeit sehr knapp wird. Dies wird oft dadurch verursacht, dass einzelne Benutzer und manchmal sogar viele Benutzer dieselbe Datei an mehreren Orten speichern. Zum Zusammenfassen und Aufräumen dieses Benutzerspeicherplatzes ist mitunter ein Duplikatsucher unerlässlich. Eine gute Lösung ist dupeGuru von Hardcoded Software.
Dieses Tool überprüft Ihren Zielordner oder Ihr Ziellaufwerk auf Duplikate, indem es die Dateinamen und die Inhalte untersucht. Dabei geht dupeGuru jedoch weit über einen einfachen Zeichenfolgenvergleich hinaus, da es einen Ähnlichkeitsalgorithmus verwendet, um Duplikate zu finden, die normalerweise übersehen werden. Sobald Ihre Duplikate gekennzeichnet wurden, können Sie wählen, sie in den Papierkorb zu verschieben, sie dauerhaft zu löschen, sie in einem anderen Ordner zu speichern oder sie mit der Standardanwendung zu öffnen, um sie einer abschließenden Untersuchung zu unterziehen. Sie können die Ergebnisse ins XHTML-Format exportieren, um sie zu einem späteren Zeitpunkt zu überprüfen.
In den Einstellungen können Sie festlegen, wie streng der Dateinamen- und Inhaltsfilter beim Überprüfen von Dateien vorgehen soll. Dies kann die Anzahl der gefundenen Duplikate erhöhen, es erhöht aber zugleich auch die Wahrscheinlichkeit von Fehltreffern. dupeGuru bietet darüber hinaus die Möglichkeit, alle Duplikate, in deren Dateinamen ein bestimmtes Wort enthalten ist, zu kennzeichnen. Dies ist sehr nützlich, um alle „Kopie von“-Dateien, die von Ihren Benutzern versehentlich erstellt werden, und alle leeren Ordner namens „Neuer Ordner“ zu finden, die über Ihre gesamten Verzeichnisse verstreut sind.
Dieses Tool ist in Versionen für Windows 2000 und höher sowie für Mac OS X erhältlich. Wenn Sie vorhaben, die Anzahl der Duplikate unter Ihren Musik- oder Fotodateien zu verringern, sollten Sie die maßgeschneiderten Versionen dupeGuru ME bzw. dupeGuru PE in Augenschein nehmen.
Preis: 19,95 $ (im Direktversand).
Räumen Sie mithilfe von dupeGuru mit doppelten Dateien auf (zum Vergrößern auf das Bild klicken)

Behalten Sie Ihre Umgebung im Auge
pt360 Tool Suite PRO
packettrap.com
Es kann sehr vorteilhaft sein, eine einzige Schnittstelle zu besitzen, um mehrere verschiedene Tools zur Netzwerküberwachung und -administration anzeigen und verwalten zu können. Eine integrierte Programmsuite erspart Ihnen nicht nur viel Zeit (und viel Desktopspeicherplatz), sondern kann es Ihnen auch erleichtern, Daten von mehreren Überwachungstools gemeinsam nutzen zu lassen und mehrere Überwachungen gleichzeitig zu kontrollieren, um eine vollständigere Übersicht über den Zustand Ihrer Infrastruktur zu erhalten.
Falls dies für Sie verlockend klingt, sehen Sie sich pt360 Tool Suite PRO von PacketTrap Networks einmal genauer an. Diese Anwendung bietet eine integrierte Benutzeroberfläche für die Tools von PacketTrap Networks sowie die Zentralisierung und Zusammenfassung von Berichterstattungsfunktionen. Sie können Ihre Toolansicht als benutzerdefiniertes Dashboard einrichten und anordnen, um auf Ihre am häufigsten verwendeten Tools und Daten zum Status der Infrastruktur sofort zugreifen zu können. Das pt360-Dashboard kann auch im Vollbildmodus verwendet werden. Dies eignet sich hervorragend für Ihre Zentrale, denn es ermöglicht allen Mitgliedern Ihres Teams, durch einen kurzen Blick auf den Bildschirm den Status mehrerer Netzwerk- und Serverressourcen einzusehen. Da diese Anwendung mehrere Dashboards unterstützt, können Sie in Ihrer Umgebung entsprechend Ihren Anforderungen mehrere verschiedene Ansichten einrichten.
Um ein Dashboard einzurichten, wählen Sie einfach in einer Dropdownliste einige Minianwendungen aus, und klicken Sie danach auf jede einzelne Minianwendung, um sie zu konfigurieren. Diese Minianwendungen sind in fünf Kategorien unterteilt: „Application“ (Anwendung), „Networking“ (Netzwerk), „Devices“ (Geräte), „Availability“ (Verfügbarkeit) und „Other“ (Sonstiges). Zur Überwachung Ihrer Server, Anwendungen und Netzwerkgeräte verwenden sie SNMP (Simple Network Management Protocol) sowie WMI. Die Minianwendungen der Kategorie „Application“ bieten Ihnen Möglichkeiten, Active Directory®, Microsoft® Exchange Server und SQL Server® zu nutzen, und stellen darüber hinaus ein Browsertool bereit. Die Minianwendungen der Kategorie „Networking“ geben Ihnen Einblick in Geräteschnittstellen und stellen Top 10-Ansichten für den durchschnittlichen Paketverlust, die höchste Latenz und die Schnittstellennutzung pro Client bereit. Die Minianwendungen der Kategorie „Devices“ stellen Leistungsindikatoren zur CPU- und Speichernutzung, zum verfügbaren Speicherplatz, zu Volumelisten, zur Netzwerkschnittstellennutzung und zu vielen weiteren Werten bereit. Mit diesen Minianwendungen können Sie ausgezeichnet kontrollieren, wie Ihre Server ihre konfigurierbaren WMI-Abfragen in Echtzeit ausführen. Die Überwachungen der Kategorie „Availability“ zeigen im Diagramm-, Tachometer-, Text- oder Listenformat die Betriebszeit Ihrer Computer an. Die Kategorie „Other“ stellt eine große digitale Uhr bereit.
Zusätzlich zum Dashboard bietet Ihnen die pt360-Toolsuite auch mehrere Netzwerktools. Sie können beispielsweise den Cisco Configurator nutzen. Mit diesem Tool können Sie Konfigurationsdateien Ihrer Cisco-Geräte archivieren, ändern, hochladen, herunterladen und miteinander vergleichen. Zusätzlich erhalten Sie drei verschiedene Pingtools – eines, das eine sortierbare Tabellenansicht liefert, ein weiteres, das eine grafische Ansicht bereitstellt, und ein drittes, mit dem Sie rasch eine Pingüberprüfung einer ganzen Gruppe von IP-Adressen durchführen können. Als weitere Überprüfungstools stehen Ihnen ein Tool zur Überprüfung von MAC-Adressen, ein Tool zur Überprüfung von Ports, ein SNMP-Überprüfungstool sowie ein WMI-Überprüfungstool zur Verfügung.
Die Toolsuite kann auch als syslog-Server arbeiten und für jedes Gerät Ihres Netzwerks, das syslog unterstützt, syslog-Nachrichten senden, empfangen, protokollieren und anzeigen. Da die Anzeige auch Filterung unterstützt, können Sie wichtige Nachrichten rasch isolieren und dadurch die Fehlerbehebung beschleunigen.
Die Suite dient auch als TFTP-Server (Trivial File Transfer-Protokoll), mit dem Sie rasch Dateien zwischen Geräten des Netzwerks verschieben können. Als weitere Tools stehen Möglichkeiten zum Ablaufverfolgungsrouting sowie Whois- und wake-on-LAN-Funktionen zur Verfügung. Da es sich bei dieser Suite um eine Zentralverwaltungslösung mit Verbindungen zu Ihren Hosts über WMI und SNMP handelt, spielt es natürlich eine entscheidende Rolle, wie die Suite ihre Anmeldeinformationen für Verbindungen speichert. Zum Glück verwendet die Suite einen nach einem erweiterten 256-Bit-Verschlüsselungsstandard (Advanced Encryption Standard, AES) verschlüsselten Anmeldeinformationsspeicher, in dem Sie die zur Überwachung Ihrer Infrastruktur benötigten Daten hinzufügen, aktualisieren und löschen können.
Preis: 999 $ (im Direktversand) für eine Einzellizenz.
Überwachen Sie Ihre Systeme mit pt360 Tool Suite PRO

Verwalten Sie die Datenträgernutzung
TreeSize Professional
jam-software.com/treesize/index.shtml
„Was verbraucht den ganzen Speicherplatz dieses Servers?!“ Kommt Ihnen dieser Aufschrei bekannt vor? Ihre Überwachungsanwendung hat Ihnen eben eine E-Mail-Nachricht gesendet, um Sie darüber zu informieren, dass ein Grenzwert für einen zu geringen Festplattenspeicherplatz unterschritten wurde. Gut, jetzt fragen Sie sich sicher, was Sie tun können, um auf diesem Computer Ordnung zu schaffen. Wie könnten Sie schnell den größten Übeltäter ermitteln, um ihn durch einen Umschalt+Entf-Prozess unschädlich zu machen? (Mit Umschalt+Entf können Sie über eine einfache Tastenkombination den Papierkorb umgehen.) Ein nützliches Tool, das Ihnen bei Ihrer Suche nach dem grünen Licht in Ihrer Hostüberwachung helfen kann, ist TreeSize Professional von JAM Software.
Diese Anwendung wird unter Windows 2000 und höher (sowohl 32- als auch 64-Bit-Versionen von Windows) ausgeführt und bietet Ihnen eine umfassende Übersicht darüber, welche Dateien den Speicherplatz Ihrer Laufwerke in Beschlag nehmen. Sie müssen lediglich das Laufwerk auswählen, das untersucht werden soll, und die Anwendung überprüft dann automatisch die Ordnerstruktur. Sobald diese Aktion abgeschlossen ist, können Sie auf sieben verschiedene Ansichten des Laufwerks zugreifen. Die erste dieser sieben Ansichten ist eine Diagrammansicht, die Ihnen der Reihe nach drei verschiedene Diagramme zur Analyse zur Verfügung stellt: ein Kreisdiagramm, ein Balkendiagramm und ein Diagramm mit relativer Größendarstellung. Mit jedem dieser Diagramme können Sie tiefer in die verschiedenen Ordner vordringen, um schnell zu ermitteln, welche Dateien und Prozesse den meisten Speicherplatz verbrauchen. Sie können auch die Farbgebung und den Stil der Diagramme nach Bedarf ändern.
Die nächste Ansicht ist eine Detailansicht, die Ihnen eine sortierbare Tabellenansicht der Dateien bietet, in der Sie unter verschiedenen Spalten diejenigen auswählen können, die angezeigt werden sollen. Die bemerkenswertesten Wahlmöglichkeiten der Benutzer umfassen den Autor von Microsoft Office-Dateien, die durchschnittliche Dateigröße in einem Ordner, den von einer Datei oder einem Ordner eingenommenen prozentualen Anteil am übergeordneten Verzeichnis sowie feste Links.
Wenn Sie immer tiefer in die Ordnerstruktur vordringen, zeigt die Ansicht der Erweiterungen an, welche Arten von Dateien in jedem Verzeichnis den meisten Speicherplatz einnehmen. Die Benutzeransicht zeigt in einer zusammengesetzten Ansicht, wie viel Speicherplatz die Dateien eines Benutzer- oder Systemkontos einnehmen, was sehr wichtig ist, wenn Benutzer ermittelt werden sollen, die Speicherplatzprobleme verursachen. Die Ansicht des Dateialters bietet Ihnen einen grafischen Überblick über die prozentualen Anteile von Dateien, die am vergangenen Tag, im vergangenen Monat, im vergangenen Jahr oder in jedem von Ihnen gewünschten Zeitraum geändert, erstellt oder abgerufen wurden. Dadurch können Sie Dateien ermitteln, die gefahrlos archiviert oder gelöscht werden können. Darüber hinaus steht eine Top 100-Ansicht zur Verfügung, durch die die 100 größten Dateien des Laufwerks identifiziert werden. Zum Schluss gibt es noch die Verlaufsansicht, durch die Verwendungsmuster des jeweiligen Laufwerks im Laufe der Zeit sichtbar gemacht werden.
Jede dieser sieben Ansichten kann gedruckt, gespeichert und zur späteren Wiederverwendung in die Zwischenablage kopiert werden. TreeSize beschleunigt über die Symbolleiste auch häufige Bereinigungsaufgaben, indem es Ihnen mit der Dateisuchfunktion ermöglicht, schnell die größten Dateien, die ältesten Dateien, die temporären Dateien, die Internetcachedateien sowie die doppelten Dateien zu isolieren. TreeSize Professional kann mithilfe von UNC-Freigaben auch über das gesamte Netzwerk hinweg nach Dateien suchen, was aber aufgrund des dazu erforderlichen Netzwerkaufwands beträchtliche Leistungseinbußen nach sich zieht.
Die Anwendung unterstützt auch einen Befehlszeilenmodus. Dieser Modus eignet sich hervorragend für die zeitliche Planung und für Programmläufe während der Nacht. Sie können eine Überprüfung auch als geplante Aufgabe einrichten und sie dafür konfigurieren, einen bestimmten Pfad zu untersuchen und nach einem Standardzeitplan verschiedene Berichte zu generieren. Damit lässt sich in jeder Nacht der gemeinsam genutzte Benutzerspeicherplatz überwachen und außerdem kontrollieren, wie der Festplattenspeicherplatz genutzt wird.
Wenn Sie darüber nachdenken, wie es nur möglich ist, dass Ihr gesamtes Terabyte an Benutzerspeicherplatz bereits in Beschlag genommen wurde, kann Ihnen TreeSize vielleicht helfen herauszufinden, wie Ihr Speicherplatz genutzt wird, und damit zu beginnen, ihn effektiver zu verwalten.
Preis: 49,95 $ (im Direktversand) für eine Einzellizenz.
Verwalten Sie die Datenträgernutzung mit TreeSize Professional (zum Vergrößern auf das Bild klicken)

Greg Steen ist Technologieexperte, Unternehmer und Enthusiast. Er ist immer auf der Suche nach neuen Tools, um IT-Experten Betriebs-, Qualitätssicherungs- und Entwicklungsprozesse zu erleichtern.


SQL – Fragen und Antworten Partitionierung, Konsistenzprüfungen und mehr
Paul S. Randal

F: Ich habe versehentlich eine Produktionsdatenbank an einen SQL Server® 2005-Server angefügt und versuche jetzt, sie an den richtigen Server anzufügen, auf dem SQL Server 2000 ausgeführt wird. Ich habe versucht, die Datenbank einfach zu trennen und sie an den SQL Server 2000-Server anzufügen. Ich habe es auch mithilfe einer Sicherung und Wiederherstellung versucht, aber keine dieser Methoden funktioniert. Warum funktioniert es nicht auf meinem SQL Server 2000-Server? Dies ist die einzige Kopie der Datenbank, über die ich verfüge.
A: Der erste Punkt, der hierbei zu beachten ist, ist die Wichtigkeit von Sicherungen. Datenbankadministratoren denken in der Regel, dass sie Sicherungen für die Wiederherstellung nach einer Beschädigung oder einem anderen Notfall, bei dem Daten zerstört wurden, benötigen. Bei Ihnen ist jedoch ein weniger offensichtlicher Notfall aufgetreten – ein Fehler während einer Aktualisierung, obwohl es sich in diesem Fall um eine versehentliche Aktualisierung handelte. Dennoch gilt, dass Sie für den Fall, dass Ihre Datenbank beschädigt wird, stets über eine aktuelle vollständige Datenbanksicherung verfügen sollten.
Eine absichtliche oder versehentliche Aktualisierung ist ein unidirektionaler Vorgang, dessen Auswirkungen sich nur sehr schwer rückgängig machen lassen. Wenn Sie von einer Version von SQL Server auf eine andere aktualisieren, wird in der Datenbank eine Reihe von Aktualisierungsschritten durchgeführt. Jeder Schritt umfasst in der Regel einige physische Änderungen an der Datenbank. Zudem wird bei jedem Schritt die Versionsnummer der Datenbank erhöht.
Eine der wesentlichen Änderungen, die beim Aktualisieren einer Datenbank von SQL Server 2000 auf SQL Server 2005 durchgeführt werden, besteht beispielsweise darin, die Struktur der Systemkataloge einer Datenbank (häufig als Systemtabellen oder Datenbankmetadaten bezeichnet) zu ändern, die verschiedene Metadaten über Tabellen, Indizes, Spalten, Zuordnungen und andere Details in Bezug auf die relationale und physische Struktur der Datenbank enthalten.
Bei jedem dieser Aktualisierungsschritte wird die Versionsnummer der Datenbank erhöht. SQL Server 7.0-Datenbanken weisen beispielsweise die Versionsnummer 515, SQL Server 2000-Datenbanken die Versionsnummer 539 und SQL Server 2005-Datenbanken die Versionsnummer 611 (oder 612, wenn das vardecimal-Feature aktiviert ist) auf. Dadurch kann SQL Server den letzten Aktualisierungsschritt ermitteln, der in Bezug auf die Datenbank durchgeführt wurde.
Versionen von SQL Server können keine Datenbanken lesen, die auf neuere Versionen von SQL Server aktualisiert wurden (SQL Server 2000 kann z. B. keine Datenbank lesen, die auf SQL Server 2005 aktualisiert wurde). Dies liegt daran, dass ältere Versionen nicht über den erforderlichen Code zum Interpretieren der aktualisierten Strukturen und des aktualisierten Datenbanklayouts verfügen. Genau darin liegt das Problem bei Ihrer Datenbank, die auf SQL Server 2005 aktualisiert wurde: Sie kann nicht wieder an SQL Server 2000 angefügt werden.
Wenn Sie nicht über eine vollständige Datenbanksicherung verfügen, besteht Ihre einzige Option darin, alle Daten aus der aktualisierten Datenbank zu exportieren und sie manuell wieder in eine neue SQL Server 2000-Datenbank zu übertragen. Solange Sie keine neuen Features von SQL Server 2005 verwendet haben, können Sie die Datenbankstruktur mithilfe eines Skripts kopieren, die Datenbank unter SQL Server 2000 erstellen und dann die Daten exportieren/importieren.
Um die Datenbank in SQL Server 2005 mithilfe eines Skripts zu kopieren, können Sie den Objekt-Explorer in SQL Server Management Studio verwenden. (Klicken Sie mit der rechten Maustaste auf die Datenbank, und wählen Sie „Tasks“ und dann die Option „Skripts generieren“ aus.) Der Assistent ist selbsterklärend und generiert ein Skript zum Erstellen aller Objekte, Indizes, Einschränkungen, Trigger und so weiter.
F: Wir haben vor kurzem unser Schema neu entworfen, damit bei der Haupttabelle Tabellenpartitionierung verwendet wird. Uns wurde gesagt, dass dies zur Verbesserung der Leistung beiträgt. Die Datenbank ist auf einem einzelnen 120-GB-Laufwerk gespeichert und die Tabelle in einer einzigen Dateigruppe enthalten. Es wird kein änderbarer Ausschnitt verwendet, sondern es werden lediglich jede Woche neue Partitionen hinzugefügt, und alle Daten müssen online verfügbar sein. Bei den meisten unserer Abfragen werden Daten aus einer einzigen Woche verarbeitet, und einige wenige erstrecken sich über das letzte Jahr. Dies scheint sich mit einer einzigen Dateigruppe einfacher realisieren zu lassen. Habe ich Recht, oder steckt mehr dahinter?
A: Obwohl es einfacher erscheinen mag, eine einzige Dateigruppe zu verwenden, ist es unwahrscheinlich, dass Sie auf diese Weise die mit der Partitionierung verbundenen Vorteile erzielen. Die Partitionierung wird hauptsächlich für eine effizientere Datenbankwartung und zur Erhöhung der Datenverfügbarkeit im Notfall verwendet. Zudem können Sie ein Schema erstellen, das Leistungssteigerungen bewirkt.
Ein typisches Beispiel für die Partitionierung ist eine Umsatztabelle mit 12 Partitionen, von denen jede einen Monat der Umsatzdaten des letzten Jahres repräsentiert. Am Ende des Monats wird die älteste Partition ausgelagert (und archiviert oder gelöscht), und es wird zu einer neuen Partition gewechselt. Dies ist das Szenario mit änderbarem Ausschnitt, das Sie erwähnt haben. Für die Partition des aktuellen Monats wird Lese-/Schreibzugriff festgelegt, und die Partitionen der vorhergehenden Monate sind schreibgeschützt. Jede Partition wird in einer eigenen Dateigruppe gespeichert. Dieses Schema bietet sämtliche Vorteile der Partitionierung, ist aber nicht unter allen Umständen optimal.
Meine Frau Kimberly hat eine abgeänderte Version des oben beschriebenen Schemas entwickelt, die eine effizientere Indizierung ermöglicht. Ziehen Sie in Erwägung, die Umsatztabelle in zwei Tabellen zu teilen – eine für die einzelne Lese-/Schreibpartition und eine für die 11 schreibgeschützten Partitionen, mit einer partitionierten Ansicht beider Tabellen.
Dadurch kann die Lese-/Schreibtabelle über eine kleine Anzahl von Indizes und die schreibgeschützte Tabelle über mehr Indizes zur Unterstützung von Berichtsabfragen verfügen. Dies erhöht wiederum deutlich die Effizienz von DML-Vorgängen (Data Manipulation Language, Datenbearbeitungssprache) für die Lese-/Schreibdaten, da nicht so viele nicht gruppierte Indizes verwaltet werden müssen.
Zudem müssen bei Abfragen für die Lese-/Schreibdaten nicht auch die schreibgeschützten Daten verarbeitet werden. Der Partitionsausschluss in Abfrageplänen ist in SQL Server 2005 nicht perfekt, insbesondere in Fällen mit komplexen Prädikaten, wurde aber in SQL Server 2008 wesentlich verbessert. Weitere Informationen hierzu finden Sie in Kimberlys Blogbeitrag unter sqlskills.com/blogs/kimberly/default,month,2007-10.aspx#a71c70243-3d57-4940-9af7-a802b73f2f93.
Um Ihnen zu zeigen, was ich meine, möchte ich einige der Features erläutern, die durch Partitionierung über mehrere Dateigruppen ermöglicht werden.
Partielle Datenbankverfügbarkeit Hierbei handelt es sich um die Fähigkeit einer Datenbank, während einer Notfallwiederherstellungssituation online und zugänglich zu sein, solange die primäre Dateigruppe online ist. Falls Sie nur über eine einzige Dateigruppe verfügen, ist die gesamte Datenbank nicht verfügbar, während sie wiederhergestellt wird. Wenn die Daten auf mehrere Dateigruppen verteilt sind, sind nur die beschädigten Dateigruppen während der Wiederherstellung offline, und Sie können möglicherweise weiter mit Ihrer Anwendung arbeiten.
Schrittweise Wiederherstellung Dieses Schema ähnelt der partiellen Datenbankverfügbarkeit. Bei einer einzelnen Dateigruppe ist die Wiederherstellungseinheit entweder eine einzelne Seite oder die gesamte Datenbank. Mit mehreren Dateigruppen können Sie eine einzelne Dateigruppe wiederherstellen und dadurch partielle Datenbankverfügbarkeit ermöglichen.
Partitionierte Datenbankwartung Mit jedem der beiden oben erläuterten Partitionierungsschemas können Sie die Indexfragmentierung pro Partition beseitigen, selbst wenn sich alle Partitionen in einer einzigen Dateigruppe befinden. Mit einer einzigen Dateigruppe büßen Sie aber die Möglichkeit ein, Konsistenzprüfungen pro Dateigruppe durchzuführen, durch die die Menge der Daten, die bei der Überprüfung der Datenbankkonsistenz (database consistency checking, DBCC) verarbeitet werden müssen, drastisch verringert werden kann (und dadurch wiederum die Menge der verwendeten CPU- und E/A-Ressourcen).
Einfach ausgedrückt: Obwohl Sie über mehrere Partitionen innerhalb derselben Dateigruppe verfügen können, bietet eine 1:1-Zuordnung zwischen Partitionen und Dateigruppen zahlreiche Vorteile.
F: Vor kurzem trat ein Problem bei einem unserer High-End-Datenbankserver auf – eine fehlerhafte Arbeitsspeicherplatine verursachte Beschädigungen. Wir entdeckten diese, als in unserer Anwendung zufällige Daten auftauchten. Daraufhin führten wir DBCC CHECKDB aus und fanden viele verschiedene Beschädigungen. Leider waren diese auch in unseren Sicherungen vorhanden, sodass wir die fehlerhaften Daten manuell bereinigen mussten.
Lange Rede, kurzer Sinn: Wir haben die fehlerhafte Hardware ersetzt und Seitenprüfsummen aktiviert. Wir würden gern regelmäßige Konsistenzprüfungen ausführen, verfügen aber nicht über ein großes Wartungsfenster, und die Prüfung unserer 2,4-TB-Datenbank nimmt viel Zeit in Anspruch. Was können wir tun?
A: Die Frage, wie für eine sehr große Datenbank (Very Large Database, VLDB) Konsistenzprüfungen und andere Wartungsaufgaben durchgeführt werden können, stellt sich immer häufiger. Viele DBAs geben auf, nachdem sie festgestellt haben, dass die Ausführung von DBCC CHECKDB länger dauert, als es ihr Wartungsfenster zulässt. (In einigen Situationen wird die Datenbank täglich rund um die Uhr verwendet, und es ist nicht möglich, den für DBCC CHECKDB erforderlichen CPU- und E/A-Aufwand längere Zeit zu tolerieren.)
Statt aufzugeben und keine Konsistenzprüfungen auszuführen (was definitiv nicht empfehlenswert ist), stehen vier verschiedene Methoden zur Auswahl. Ich habe persönlich Kunden geholfen, diese vier Ansätze zu nutzen.
Verwenden der Option WITH PHYSICAL_ONLY von DBCC CHECKDB Bei der regelmäßigen Überprüfung der Datenbankkonsistenz mit DBCC CHECKDB werden zahlreiche logische Konsistenzprüfungen ausgeführt, die einen großen Teil der CPU-Ressourcen in Anspruch nehmen (sodass es sich im Grunde um einen CPU-gebundenen Vorgang handelt). Bei Verwendung der Option WITH PHYSICAL_ONLY beschränken sich die Prüfungen auf die sehr schnellen Prüfungen der Konsistenz der Zuordnungsbitmuster mit DBCC CHECKALLOC und anschließendes Lesen und Überprüfen jeder zugeordneten Seite in der Datenbank, wodurch die Prüfung aller für die Seiten vorhandenen Seitenprüfsummen erzwungen wird. Dadurch wird DBCC CHECKDB zu einem E/A-gebundenen Vorgang mit einer viel kürzeren Ausführungszeit. (Tatsächlich ist der Vorgang manchmal sogar um eine Größenordnung schneller als ein vollständiger DBCC CHECKDB-Vorgang, woraus sich beträchtliche Zeiteinsparungen ergeben können.)
Aufteilen der Konsistenzprüfungslast Hierzu ist es erforderlich, dass die Tabellen in der Datenbank in gleich große Gruppen aufgeteilt werden (der einfachste Ansatz besteht darin, diese Aufteilung nach der Seitenanzahl vorzunehmen) und dann jede Nacht mithilfe von DBCC CHECKTABLE-Befehlen die Konsistenz aller Tabellen in einer einzelnen Gruppe geprüft wird. Daher können Sie, wenn Sie beispielsweise über sieben Gruppen verfügen, von denen pro Tag eine geprüft wird, und Sie DBCC CHECKALLOC und DBCC CHECKCATALOG einmal pro Woche ausführen, das Äquivalent eines DBCC CHECKDB-Vorgangs erreichen – wenn auch über eine Woche verteilt.
Verwenden der Tabellenpartitionierung mit mehreren Dateigruppen Die größten Tabellen in der VLDB können auf mehrere Dateigruppen aufgeteilt werden. Ein Beispielschema für die Konsistenzprüfung kann darin bestehen, täglich DBCC CHECKFILEGROUP für die Dateigruppe, die die Lese-/Schreibpartition enthält, und wöchentlich DBCC CHECKFILEGROUP für die Dateigruppen, die die schreibgeschützten Partitionen enthalten, auszuführen. Der Gedanke dabei ist, dass die schreibgeschützten Daten umfassend gesichert und bei der alltäglichen Verarbeitung nicht verwendet werden. Daher muss ihre Konsistenz nicht so häufig geprüft werden, da die Beschädigung dieser Daten nicht so schwerwiegend ist.
Auslagern der Konsistenzprüfungen auf einen anderen Server Diese Option umfasst die Wiederherstellung regelmäßiger vollständiger Datenbanksicherungen auf einem anderen Server und die Ausführung von DBCC CHECKDB auf diesem Server. Offensichtlich wird dadurch der Produktionsserver vollständig von der Konsistenzprüfungslast befreit. Der Nachteil besteht jedoch darin, dass beim Auffinden einer Beschädigung eine Konsistenzprüfung auf dem Produktionsserver ausgeführt werden muss – dies sollte aber nur sehr selten vorkommen.
Sie sehen also, dass DBAs zahlreiche Optionen für die Durchführung von Konsistenzprüfungen bei einer VLDB zur Verfügung stehen, wodurch die zusätzliche Ressourcenlast verringert werden kann, die beim Ausführen eines vollständigen DBCC CHECKDB-Vorgangs erforderlich ist. Wie bereits erwähnt, habe ich persönlich Kunden geholfen, diese vier Ansätze zu nutzen. Ich bin überzeugt, dass Sie feststellen werden, dass diese Optionen für Sie funktionieren.
Tipp: Verwenden von Triggern zum Implementieren der serverseitigen Logik
In einigen Szenarios müssen Sie die serverseitige Logik mit Triggern implementieren. Es gibt aber bestimmte Fallen, die Sie kennen müssen. Im Folgenden werden einige wichtige Punkte erläutert, die Sie beachten sollten.
  • Trigger werden von Anweisungen und nicht pro Zeile ausgelöst. Dennoch sollten Sie unbedingt zusätzliche Logik innerhalb Ihrer Triggerlogik verwenden, um das Szenario abzudecken, dass mehrere oder keine Zeilen von der Anweisung betroffen sind. (Trigger werden pro Anweisung ausgelöst, selbst wenn keine Zeilen betroffen sind.) Die betroffenen Daten werden in virtuellen Tabellen für die DML-Anweisungen (Data Manipulation Language, Datenbearbeitungssprache) gespeichert. Diese Tabellen können verknüpft werden, was Ihnen das Arbeiten mit den Daten ermöglicht.
  • Trigger werden innerhalb Ihrer Transaktion synchron ausgeführt. Bedenken Sie dies stets, wenn Sie eine externe Anwendung aufrufen oder auf eine externe Ressource zugreifen möchten, bei der Sie nicht sicher sein können, dass die Rückgabe innerhalb kurzer oder angemessener Zeit erfolgt. Wenn Sie beispielsweise eine Update-Anweisung für eine Tabelle auslösen und innerhalb dieser Aktion ein Trigger ausgelöst wird, wird die Transaktion (das Implizite der Update-Anweisung) erst beendet, wenn die gesamte Logik des Triggers abgeschlossen ist. Wenn die externe Anwendung oder der externe Prozess einen Fehlercode zurückgibt, kann SQL Server die Transaktion abbrechen und Ihre Transaktion (in Abhängigkeit von der implementierten Fehlerbehandlung und vom Fehlercode) zurücksetzen. Wenn Sie innerhalb eines Triggers eine externe Aktion durchführen müssen und der Trigger für die Transaktion nicht entscheidend ist (oder nicht innerhalb desselben Bereichs ausgeführt werden muss), sollten Sie ihn daher auf einen anderen Prozess erweitern und Daten asynchron abrufen. Mit SQL Server 2005 wurde SQL Server Service Broker eingeführt, ein Feature, mit dem diese Vorgänge asynchron durchgeführt werden können.
  • Ein Fehler, der von einer Anweisung innerhalb eines Triggers verursacht wird, lässt sich äußerst schwer finden. Wenn mehrere Tabellen an der Transaktion beteiligt sind, prüfen Sie im Fall eines Fehlers unbedingt die Trigger, und implementieren Sie eine ausreichende Fehlerbehandlung. Wenn Sie das Schema innerhalb Ihrer Datenbank ändern, stellen Sie sicher, dass Sie auch die Triggerlogik überwachen – andernfalls kann ein kleiner Trigger enorme Auswirkungen auf die Gesamtleistung und -stabilität haben. Die meisten Auswirkungen in Bezug auf Schemaänderungen können mit Visual Studio® for Database Professionals geprüft werden, indem beim Bearbeiten des Projekts automatische Schemaüberprüfungen durchgeführt werden und eine statische Codeanalyse vorgenommen wird, um auf Datentypinkonsistenzen zu prüfen.
– Jens K. Süßmeyer, Datenbankberater bei Microsoft

Paul S. Randal ist der leitende Direktor von SQLskills.com und ein SQL Server-MVP. Er war von 1999 bis 2007 im SQL Server-Speichermodulteam von Microsoft tätig. Paul Randal schrieb DBCC CHECKDB/repair für SQL Server 2005 und war bei der Entwicklung von SQL Server 2008 für das Kernspeichermodul zuständig. Als Experte für Notfallwiederherstellung, hohe Verfügbarkeit und Datenbankwartung ist Paul Randal ein regelmäßiger Referent bei Konferenzen. Sein Blog befindet sich unter SQLskills.com/blogs/paul.


Schwerpunkt Dienstprogramme Das Dienstprogramm „Windows Installer CleanUp“
Lance Whitney

Sie versuchen, eine Anwendung auf einem der PCs in Ihrer Umgebung zu deinstallieren oder zu aktualisieren, aber der Befehl wird nicht ausgeführt. Stattdessen wird eine Fehlermeldung angezeigt, dass die Anwendung nicht deinstalliert oder aktualisiert werden konnte. Kommt Ihnen das bekannt vor? Wenn ja, dann haben Sie sich sicherlich gefragt, was die Ursache dieses Fehlers ist.
Software, die über die MSI-Technologie (Microsoft® Windows® Installer) installiert wird, erstellt bestimmte Dateien und Registrierungseinstellungen. Wenn diese Dateien oder Einstellungen fehlen oder beschädigt sind, können Sie das Programm möglicherweise nicht entfernen, aktualisieren oder neu installieren. Die Lösung besteht in solchen Fällen darin, alle Windows Installer-Informationen zu entfernen, damit das Programm neu installiert werden kann. Hierfür bietet Microsoft das kostenlose Dienstprogramm „Windows Installer CleanUp“ an.
Windows Installer CleanUp löscht alle Dateien und Registrierungseinstellungen, die der Windows Installer-Konfiguration eines Programms zugeordnet sind. Beachten Sie aber, dass das Tool die eigentlichen Installationsdateien und Registrierungseinstellungen des Programms nicht entfernt. Das Tool ist auch nicht in der Lage, die Befehle unter der Option „Software“ in der Systemsteuerung außer Kraft zu setzen.
Dieses Tool wird stattdessen verwendet, wenn eine Anwendung nicht über die Option „Software“ in der Systemsteuerung oder mit anderen Methoden deinstalliert oder aktualisiert werden kann. Durch Löschen der Windows Installer-Informationen sollten Sie in der Lage sein, die Anwendung neu zu installieren. Sie können das Programm dann so belassen, es aktualisieren oder es entfernen.
Das Dienstprogramm „Windows Installer CleanUp“ zeigt eine Liste aller Windows Installer-basierten Anwendungen auf dem PC an (zum Vergrößern auf das Bild klicken)
Einige Benutzer sind möglicherweise mit dem Microsoft-Befehlszeilenprogramm „msizap“ vertraut, mit dem die Windows Installer-Daten eines Programms entfernt werden. Dieser Befehl wird immer noch verwendet: Bei Windows Installer CleanUp handelt es sich lediglich um ein benutzerfreundliches Front-End für msizap, sodass sich Benutzer nicht mehr mit Befehlzeilenoptionen auseinandersetzen müssen.
Nachdem Sie das Dienstprogramm installiert haben, wird unter „Programme“ ein Unterverzeichnis namens „Windows Installer CleanUp“ angezeigt. In diesem Unterverzeichnis befinden sich drei Dateien: msicuu.exe, msizap.exe und readme.txt. Die Datei „msicuu.exe“ zeigt eine Liste aller Windows Installer-basierten Anwendungen auf dem PC an. Sie können diese dann auswählen, die Auswahl aufheben oder sie entfernen. Dieses Programm übermittelt Ihre Auswahl dann an den Befehl „msizap.exe“, mit dem die Windows Installer-Informationen für die ausgewählten Anwendungen entfernt werden.
Rufen Sie zum Ausführen von Windows Installer CleanUp „Start“ | „Programme“ auf, und suchen Sie den entsprechenden Ordner. Klicken Sie dann auf die Verknüpfung für Windows Installer CleanUp. Eine Liste mit allen Windows Installer-basierten Anwendungen, die sich auf dem PC befinden, wird angezeigt (siehe Bildschirmfoto). Wählen Sie die Anwendung aus, die Probleme bereitet, und klicken Sie auf die Schaltfläche „Remove“ (Entfernen). Die Anwendung wird nun aus der Windows Installer-Datenbank gelöscht und kann dann neu installiert werden.
Nachdem Sie das CleanUp-Tool verwendet haben, wird die Anwendung nicht mehr unter „Programme“ angezeigt. Wenn Sie die Anwendung also unwiderruflich entfernen möchten, muss sie zunächst neu installiert werden. Windows Installer CleanUp kann lediglich für Software verwendet werden, die mit der Windows Installer-Technologie installiert wurde. Hierzu gehören üblicherweise Installationspakete in Form von MSI-Dateien.
Achten Sie auch darauf, dass Sie als Administrator angemeldet sein müssen, um Windows Installer CleanUp ausführen zu können. Das Tool ist mit allen 32-Bit- und 64-Bit-Versionen von Windows kompatibel. Weitere Informationen zum Dienstprogramm und zum Herunterladen der Software finden Sie unter support.microsoft.com/kb/290301.

Lance Whitney ist IT-Berater, Schulungsleiter und Autor technischer Artikel. Er hat sich intensiv mit dem Optimieren von Windows-Arbeitsstationen und -Servern beschäftigt. Er ist von Haus aus Journalist und hat vor etwa 15 Jahren den Sprung in das kalte Wasser der IT-Welt getan.


Einblicke in SharePoint Problembehandlung bei der Messagingintegration
Pav Cherny

Codedownload verfügbar unter: SharePoint2008_08.exe (416 KB)
Inhalt
Allgemeiner Ansatz zur Problembehebung
SharePoint-Messagingarchitektur
Ermitteln von Diagnoseinformationen
Ausgehende Nachrichtenübermittlung
Eingehende Nachrichtenübermittlung
Verzeichnisverwaltung

In einer gut entworfenen SharePoint-Umgebung müssen Benutzer für die Informationsbeschaffung nicht ihre Kommunikationsgewohnheiten oder Arbeitsroutinen ändern, um zusammenarbeiten zu können. Statt Websites, an denen gemeinsam gearbeitet wird, ständig manuell prüfen zu müssen, kann SharePoint Dokumente und andere Informationen, wie z. B. Warnungen und Erinnerungen, direkt an die Postfächer der Benutzer übermitteln.
Benutzer können sich auch an den Workflows beteiligen, indem Sie auf diese Nachrichten antworten oder neue Elemente als E-Mail-Nachrichten an Dokumentbibliotheken und Listen senden.
Die Integration von SharePoint® in eine sichere Messagingumgebung beinhaltet jedoch einige Herausforderungen, und Nicht-SharePoint-Komponenten haben die Möglichkeit, sich auf die SharePoint-basierte Zusammenarbeit auszuwirken. Die Herausforderung besteht darin, Hauptursachen für Probleme in der integrierten Umgebung effizient zu isolieren und zu eliminieren.
In diesem Artikel wird die SharePoint-Messagingintegration basierend auf einer bewährten Strategie zur Problembehandlung vorgestellt, die schnelle Ergebnisse liefert. Hierbei ist es wichtig, das Problem schnell zu finden und dann detaillierte und gezielte Schritte zur Problembehandlung durchzuführen.
In einer großen Organisation kann dieser phasenweise Ansatz bedeuten, dass das Problem nach einer anfänglichen Analyse an einen anderen Spezialisten übergeben wird. Dies ist insbesondere bei Problemen mit Nicht-SharePoint-Komponenten der Fall. In kleinen und mittleren Organisationen ist es jedoch nicht unüblich, dass ein IT-Administrator Probleme für alle verwendeten Systeme direkt beheben können muss. Dies macht einen strukturierten Ansatz noch wichtiger.
Um diesen Artikel praxisnah zu halten, wird eine Testumgebung mit Active Directory®, Exchange Server 2007 und WSS 3.0 verwendet. Eine Schritt-für-Schritt-Anleitung zur Erstellung der Testumgebung sowie Tools für die Problembehandlung, die in diesem Artikel vorgestellt werden, finden Sie im Begleitmaterial, das im Bereich mit den Codedownloads auf der TechNet Magazin-Website heruntergeladen werden kann.

Allgemeiner Ansatz zur Problembehebung
Die Fehlerbehebung für die SharePoint-Messagingintegration erfordert einen sehr strukturierten Ansatz, möglicherweise sogar strukturierter als in anderen Interoperabilitätsszenarios. Mehrere Faktoren erschweren dies.
In diesem Fall handelt es sich um komplexe Technologien, und bei Problemen mit Nachrichtenübertragung, Nachrichtformatkonvertierung, Sicherheitsaspekten und Verzeichnisverwaltung können einige SharePoint-Fehlermeldungen nicht klar zu verstehen sein. In Internetnewsgroups finden sich zahlreiche Diskussionsthreads, die alle keine Lösung bieten und Sie in die falsche Richtung leiten können, wie z. B. das Ausführen aller Webanwendungen unter der Anwendungspoolidentität für die SharePoint-Zentraladministration, um eine fehlerfreie Messagingintegration zu erreichen.
Es gibt jedoch auch positive Aspekte. SharePoint ist sehr flexibel. SharePoint bietet detaillierte Informationen zur Problembehebung, wenn der Benutzer weiß, wo er suchen muss. Mit einigen grundlegenden Skripts können Sie die Effizienz Ihrer Problembehandlung deutlich steigern.
Als Erstes gilt es, das aufgetretene Problem zu verstehen. Es muss festgestellt werden, wo das Problem aufgetreten ist und welche Komponenten betroffen sind. Möglicherweise ist es auch hilfreich, das Problem in unterschiedlichen Systemkonfigurationen zu reproduzieren und die Windows®-Ereignisprotokolle und textbasierten Protokolldateien zu Rate zu ziehen. Dies kann aber schwierig sein, da einige Probleme nur sporadisch auftreten. Trotzdem gilt, je besser Sie ein Problem reproduzieren können, desto schneller können Sie die Hauptursache identifizieren und eliminieren. Wichtig ist auch, alle Konfigurationsänderungen und Reparaturen zu dokumentieren und sicherzustellen, dass diese für alle relevanten Systeme in der Umgebung (z. B. auf allen Front-End-Servern in einer Webfarm) durchgeführt wurden. Die Bedeutung dieses Schritts wird häufig übersehen.

SharePoint-Messagingarchitektur
Wenn Sie mit einem Problem bezüglich der Messagingintegration konfrontiert sind, ist es besser, sich eine Tasse Kaffee oder Tee zu holen und dann die SharePoint-Messagingintegrationsarchitektur zu überprüfen, bevor Sie sich mit der Problembehandlung beschäftigen. Wenn Sie dies nicht tun, kann es sein, dass Sie das falsche Problem oder die falsche Komponente reparieren. So bedeutet z. B. der Fehler „Zugriff verweigert“, der die Erstellung eines Kontaktobjekts in Active Directory verhindert, nicht unbedingt, dass die Zugriffsberechtigungen in Active Directory repariert werden müssen. Dies wird später an einem Beispiel verdeutlicht.
Es ist auf jeden Fall wichtig zu verstehen, welche Rolle die einzelnen Komponenten bei der Messagingintegration spielen und wie die einzelnen Komponenten miteinander interagieren. In Abbildung 1 sehen Sie die wichtigen Komponenten in einem SharePoint-Exchange-Konnektivitätsszenario. Diese Situation wird im Folgenden detailliert beschrieben.
Abbildung 1 SharePoint-Messagingintegrationsarchitektur (zum Vergrößern auf das Bild klicken)

Ermitteln von Diagnoseinformationen
Bei einem der wichtigsten Tools für die Problembehandlung handelt es sich um zuverlässige Diagnoseinformationen. Der Klassiker ist hierbei immer noch das Windows-Ereignisprotokoll. Sie können z. B. die Detailebene steuern, mit der SharePoint Einträge in Windows-Ereignisprotokollen auf Webservern erstellt. Dazu wird die SharePoint-Zentraladministration verwendet (klicken Sie auf der Seite „Vorgänge“ unter „Protokollierung und Berichterstellung“ auf „Diagnoseprotokollierung“). Sie können die minimalen kritischen Ereignisse festlegen, die in das Ereignisprotokoll und das Ablaufverfolgungsprotokoll aufgenommen werden sollen. Das Ablaufverfolgungsprotokoll (das sich standardmäßig unter %CommonProgramFiles%\Microsoft Shared\Web Server Extensions\12\Logs befindet) eignet sich besonders für die Suche nach untergeordneten Informationen. Das Protokoll erreicht aber schnell seine Kapazitätsgrenzen, und daher sollte dieses Feature nur selten verwendet werden.
Eine andere Möglichkeit, Diagnoseinformationen zu erhalten, ist die Aktivierung des Debuggens für die betroffene Webanwendung. Dies wird über das Konfigurieren der entsprechenden web.config-Datei erreicht und wird im Begleitmaterial im Dokument „Web Application Config.pdf“ beschrieben. SharePoint zeigt ausführliche Verfolgungsinformationen direkt in der Benutzeroberfläche an. Der Vorteil dieses Ansatzes liegt darin, dass die relevanten Fehlerinformationen angezeigt werden können, ohne dass zahlreiche Megabytes an Verfolgungsdaten durchsucht werden müssen. Ein Nachteil besteht darin, dass Sie die Systemkonfiguration Ihrer Webanwendung ändern müssen. Denken Sie daran, eine Sicherungskopie der ursprünglichen web.config-Datei zu erstellen und die ursprüngliche Konfiguration wiederherzustellen, wenn Sie die Problembehandlung beendet haben.
Sie können den SMTP-Dienst so konfigurieren, dass dieser detaillierte Verarbeitungsinformationen in das SMTP-Protokoll einträgt (aktivieren Sie im IIS-Manager das Kontrollkästchen „Protokollierung aktivieren“ auf der Registerkarte „Allgemein“). Stellen Sie sicher, dass Sie das Modul für ODBC-Protokollierung mit dem SMTP-Dienst-Feature entsprechend der Beschreibung im Begleitmaterial im Dokument „SharePoint Messaging Integration.pdf“ installieren, auch wenn Sie nicht vorhaben, ODBC-Protokollierung zu verwenden. Andernfalls erstellt der SMTP-Dienst das Protokoll nicht. Das SMTP-Protokoll ist standardmäßig unter %SystemRoot%\System32\LogFiles\SmtpSvc1 gespeichert. Hierbei handelt es sich um eine Textdatei, mit der Sie die SMTP-Kommunikation detailliert analysieren und außerdem bestimmen können, ob eine Nachricht vom SharePoint-Server gesendet wurde.
Auf dem Hub-Transport-Server, der mit dem SMTP-Dienst kommuniziert, können Sie auch die Protokollierung über die Konfiguration „Sendeconnector“ bzw. „Empfangsconnector“ aktivieren (weitere Informationen finden Sie im Dokument „SharePoint Messaging Integration.pdf“). Sie können auch verschiedene andere Tools verwenden, um den Pfad von Nachrichten in der Exchange Server 2007-Umgebung über Hub-Transport-Server und Postfachserver zu verfolgen. Zu diesen Tools gehören Nachrichtenverfolgung, Warteschlangenanzeige, und Pipelineablaufverfolgung. Detaillierte Informationen zur Problembehandlung bei Problemen mit der Nachrichtenübermittlung in Exchange Server 2007 finden Sie unter „Probleme mit dem Transport und der E-Mail-Nachrichtenübermittlung“ unter go.microsoft.com/fwlink/?LinkID=120145.
Auf Active Directory-Domänencontrollern können Sie ausführliche Informationen zur Problembehandlung durch Aktivieren der Diagnoseprotokollierung für den Verzeichniszugriff und andere Kategorien erfassen. Hierfür werden die entsprechenden Registrierungseinträge unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics festgelegt. Der Wert „0x0“ für eine Kategorie bedeutet, dass lediglich kritische Ereignisse protokolliert werden, während der Wert „0x5“ für alle Ereignisse steht, einschließlich Informationen zum Debuggen. Verwenden einer höheren Protokollierungsebene als 0x3 kann zu einem Leistungsabfall des Servers führen und das Windows-Ereignisprotokoll schnell füllen. Während des normalen Betriebs sollten alle Werte auf 0x0 gesetzt werden.
Das Erfassen detaillierter Diagnoseinformationen auf SharePoint-, Exchange- und Active Directory-Servern in einer Problemsituation kann dabei helfen, den Fehler schnell und zuverlässig zu ermitteln. Zusätzliche Tools zur Problembehandlung, wie z. B. TCP/IP-Tools (Ping, Tracert, Telnet usw.) und Network Monitor können ebenfalls hilfreich sein, da der Großteil der Kommunikation zwischen diesen Systemen über das Computernetzwerk ausgeführt wird. Microsoft® Network Monitor 3.1 steht unter go.microsoft.com/fwlink/?LinkId=120143 zur Verfügung.

Ausgehende Nachrichtenübermittlung
Ressourcen
  • Website zu SharePoint-Produkten und -Technologien
  • Windows SharePoint Services-TechCenter
  • Windows SharePoint Services-Entwicklercenter
  • Teamblog zu Microsoft SharePoint-Produkten und -Technologien
Mit Ereignisprotokollen, Ablaufverfolgungsprotokollen, SMTP-Protokollen, Nachrichtenverfolgungsprotokollen und Netzwerkablaufverfolgungen kann die Problembehandlung für SharePoint-Messagingintegration nun beginnen. Zunächst zum leichten Teil, der ausgehenden Nachrichtenübermittlung. SharePoint unterstützt ausgehende Nachrichtenübermittlung in verschiedenen Konfigurationen und erfordert keinen lokalen SMTP-Dienst auf den Webservern. Bei einem vollständigen Messagingintegrationsszenario wird jedoch empfohlen, den lokalen SMTP-Dienst zu verwenden. Abbildung 2 zeigt die Hauptkomponenten des Szenarios.
Abbildung 2 Ausgehende Nachrichtenübermittlung (zum Vergrößern auf das Bild klicken)
Dieses Messagingszenario verfügt über vier Phasen: SharePoint übermittelt die Nachricht an den SMTP-Dienst, der SMTP-Dienst verarbeitet die Nachricht, der Hub-Transport-Server empfängt die Nachricht, und Exchange Server 2007 übermittelt die Nachricht an das endgültige Ziel.
Wenn SharePoint die Nachricht nicht an den SMTP-Dienst übermitteln kann, wird in der Regel in der Benutzeroberfläche eine Fehlermeldung angezeigt, z. B. dass eine E-Mail-Benachrichtigung nicht gesendet werden konnte. Die Ursache hierfür ist möglicherweise, dass der SMTP-Dienst nicht ausgeführt wird. Es kann auch sein, dass im SMTP-Protokoll angegeben wird, dass der SMTP-Dienst den Übertragungsversuch mit Fehlercode 550 abgelehnt hat (Angeforderte Aktion wurde nicht ausgeführt: Postfach nicht verfügbar). Dies gibt an, dass es sich bei dem Problem um einen Fehler des SMTP-Diensts handelt.
Sie können ein einfaches Skript verwenden, um sicherzustellen, dass es sich bei dem Fehler nicht um ein SharePoint-Problem handelt (siehe SMTP.vbs im Begleitmaterial), mit dem eine Testnachricht über SMTP mit den gleichen Sender- und Empfängerinformationen gesendet wird. Wenn es sich bei dem Fehler um ein SMTP-Dienstproblem handelt, schlägt das Skript fehl. Das Skript kann Ihnen wertvolle Anhaltspunkte zur Hauptursache des Problems bieten, die SharePoint selbst bei aktiviertem Debuggen nicht erkennt (siehe Abbildung 3).
Abbildung 3 Nachrichten können nicht weitergeleitet werden (zum Vergrößern auf das Bild klicken)
Durch Gewähren der Webserver-Weiterleitungsberechtigung in der SMTP-Dienstkonfiguration sowie Neustarten des SMTP-Diensts kann das SharePoint-Nachrichtenübermittlungsproblem gelöst werden. Die Nachricht kann jetzt an den SMTP-Dienst übermittelt werden, und die nächste wichtige Frage ist, ob der SMTP-Dienst die Nachricht an den Hub-Transport-Server übermitteln kann.
Wenn die Nachricht im Warteschlangenordner bleibt, kann der SMTP-Dienst den Hub-Transport-Server nicht kontaktieren. Dies liegt daran, dass der Microsoft Exchange Transport-Dienst nicht ausgeführt wird oder dass ein Problem mit der Netzwerkkommunikation oder -konfiguration vorliegt. Mithilfe des Telnet-Clients können Sie schnell überprüfen, ob Sie eine Verbindung zum Zielport eines Empfangsconnectors herstellen können, der für die interne Kommunikation konfiguriert ist.
Hierbei handelt es sich nicht unbedingt um den TCP-Port 25. Wenn der SMTP-Dienst diesen Port verwendet, können Sie die Nachrichten an den standardmäßigen Empfangsconnector für Hub-Transport-Server übermitteln, der für das Blockieren anonymer Nachrichtenübermittlungen konfiguriert ist. In diesem Fall wird im Drop-Ordner eine Nachrichtendatei angezeigt. (Der Dienst „Windows SharePoint Services-Timer“ muss angehalten werden. Andernfalls wird die Nachricht nach einigen Sekunden ausgeblendet.) Bei der Nachrichtendatei handelt es sich um eine Benachrichtigung über den Zustellungsstatus, die angibt, dass die Nachricht zurückgewiesen wurde: „Diagnosecode: smtp;530 5.7.1 Client wurde nicht authentifiziert.“
Um dieses Problem zu lösen, sollten Sie einen dedizierten Empfangsconnector für die SharePoint-Server erstellen. Da es sich bei den SharePoint-Servern um interne Systeme handelt, sollten Sie die Authentifizierungsoption „Extern gesichert“ wählen. Somit müssen dem Konto ANONYMOUS-ANMELDUNG keine erweiterten Rechte zugewiesen werden. Ziehen Sie auch in Betracht, IPSec zu verwenden, um die Kommunikation zwischen den SharePoint-Servern und dem Hub-Transport-Server zu schützen.
Wenn Nachrichten den SMTP-Warteschlangenordner verlassen und die SMTP-Protokolle auf dem SharePoint-Server und dem Hub-Transport-Server anmeldet (überprüfen Sie den Ordner „%ProgramFiles%\Microsoft\Exchange Server\TransportRoles\Logs\ProtocolLog\SmtpReceive“) eine erfolgreiche Nachrichtenübermittlung anzeigen, können Sie die Übermittlung als erfolgreich betrachten, vorausgesetzt, Exchange Server 2007 kann die Nachricht an das Ziel weiterleiten. Verwenden Sie, wie bereits erwähnt, Tools für die Problembehandlung bei der Nachrichtenübermittlung, die in Exchange Server 2007 enthalten sind, um Probleme zu untersuchen, wenn Nachrichten nicht an den beabsichtigten Exchange-Empfänger übermittelt werden können. Beachten Sie, dass falsche Empfängerinformationen, Spamfilter und Einschränkungen der Nachrichtengröße eine endgültige Zustellung verhindern können.

Eingehende Nachrichtenübermittlung
In der entgegengesetzten Richtung ist die Nachrichtenübermittlung etwas komplexer, da potenzielle Probleme diffiziler sind. So wird z. B. in der SharePoint-Produktdokumentation empfohlen, MX-Datensätze in DNS für SharePoint-E-Mail-Domänen zu konfigurieren. Dies kann zu einer falschen Weiterleitung von Nachrichten in einer Exchange-Organisation führen.
Exchange Server 2007 verwendet für die Nachrichtenübermittlung Sendeconnectoren mit zugeordneten Adressräumen. Hierbei können SharePoint-Nachrichten möglicherweise für die Übermittlung an Edge-Transport-Server über das Internet geleitet werden, obwohl es sich bei Ihren SharePoint-Servern um interne Server handelt. Verwenden Sie für die interne Nachrichtenübermittlung stattdessen Sendeconnectoren mit detaillierten Adressräumen, und geben Sie die SharePoint-Server an, die den SMTP-Dienst als intelligenten Host in der Connectorkonfiguration ausführen (Informationen finden Sie im Dokument „SharePoint Messaging Integration.pdf“ im Begleitmaterial). Das Einrichten einer klar definierten Routingtopologie mit dedizierten Bridgeheadservern hilft bei der zuverlässigen Nachrichtenübermittlung von Exchange nach SharePoint.
Um zu überprüfen, ob Nachrichten bei Ihrem SharePoint-Server ankommen, stoppen Sie den Dienst „Windows SharePoint Services-Timer“. Nachrichten stapeln sich im Drop-Ordner, da der Timer-Dienst die Nachrichten verarbeitet und Dateianhänge in Dokumentbibliotheken ablegt, die den E-Mail-Adressen der Empfänger zugeordnet sind. Dies wird in Abbildung 4 gezeigt. Wenn die Nachrichten nicht im Drop-Ordner ankommen, verwenden Sie die Warteschlangenanzeige auf Ihrem Hub-Transport-Server, um zu überprüfen, ob Exchange die Nachrichten korrekt weiterleitet. Untersuchen Sie dann Netzwerkkommunikationsprobleme, die möglicherweise eine Kommunikation zwischen dem Hub-Transport-Server und dem SMTP-Dienst auf dem SharePoint-Server verhindern.
Abbildung 4 Eingehende Nachrichtenübermittlung (zum Vergrößern auf das Bild klicken)
Wenn Sie den Timer-Dienst neu starten, sollten die Nachrichtenelemente nicht mehr im Drop-Ordner angezeigt werden. Wenn die Nachrichtenanlagen nicht als Dokumente in den Zielbibliotheken abgelegt werden, obwohl SharePoint eine erfolgreiche Nachrichtverarbeitung im Windows-Ereignisprotokoll anzeigt, bedeutet dies, dass Exchange die Nachrichten im Exchange-RTF-Format gesendet hat. Schalten Sie zum Untersuchen dieses Problems den Timer-Dienst erneut aus, senden Sie eine weitere Nachricht mit einer Anlage vom Outlook®-Client, und öffnen Sie die Nachricht im Editor, nachdem sie im Drop-Ordner eingetroffen ist. Suchen Sie die Zeichenfolge „winmail.dat“. Wenn diese Zeile vorhanden ist, sendet Exchange Server die Nachrichten im falschen Format.
Für SharePoint müssen Nachrichtenanlagen im Format MIME oder UUENCODE codiert sein. SharePoint zeigt keine winmail.dat-Verarbeitungsfehler im Windows-Ereignisprotokoll an (siehe Abbildung 5). Die Dateianlagen werden einfach nicht in der Dokumentbibliothek angezeigt. Verwenden Sie Editor als Tool für die Problembehandlung, und beheben Sie das Problem durch Konfigurieren einer Remotedomänendefinition in der Exchange-Verwaltungskonsole für die SharePoint-E-Mail-Domäne. Wählen Sie auf der Registerkarte „Format der Originalnachricht, die als Anlage an den Journalbericht gesendet wurde“ unter „Exchange-Rich-Text-Format“ die Option „Nie verwenden“ aus.
Abbildung 5 Winmail.dat-Nachrichtenverarbeitung (zum Vergrößern auf das Bild klicken)

Verzeichnisverwaltung
Ein hilfreiches Timer-Dienstereignis ist Ereignis 6873, das einen Fehler während der Verarbeitung einer eingehenden E-Mail-Datei aufgrund eines unbekannten Alias angibt. Dies tritt auf, wenn ein Exchange-Benutzer beim Senden von Nachrichten eine falsche SharePoint-E-Mail-Adresse angibt, z. B. eine nicht vorhandene Dokumentbibliothek.
Sie können dieses Problem durch Konfigurieren des Verzeichnisverwaltungsdiensts in den Einstellungen für eingehende E-Mail-Nachrichten in der SharePoint-Zentraladministration beheben, um Empfängerobjekte für E-Mail-aktivierte Dokumentbibliotheken in Active Directory zu erstellen. Exchange-Benutzer können diese Empfängerobjekte dann einfach mit den richtigen Adressinformationen aus dem Adressbuch auswählen.
Seien Sie sich jedoch bewusst, dass dies zu zahlreichen weiteren potenziellen Problemen führen kann. Der Verzeichnisverwaltungsdienst schlägt in einer sicheren Systemkonfiguration basierend auf dem Prinzip der geringsten Rechte fehl, da dieses Feature erhöhte Berechtigungsanforderungen auf dem Webserver aufweist. Darüber hinaus wird die Situation in der Produktdokumentation (z. B. technet.microsoft.com/library/cc262947.aspx) ein wenig übertrieben, wenn empfohlen wird, dem Anwendungspoolkonto der Zentraladministration das Recht „Erstellt, entfernt und verwaltet Benutzerkonten“ in der Organisationseinheit zu erteilen, die Sie für die SharePoint-Empfängerobjekte in Active Directory angegeben haben.
Der Verzeichnisverwaltungsdienst erstellt Kontakt- und Gruppenobjekte, und das Anwendungspoolkonto der Zentraladministration erfordert daher vollständige Kontrolle über Kontakt- und Gruppenobjekte in dieser Organisationseinheit, benötigt aber keine Administrationsberechtigungen für die Benutzerkonten. Wenn Sie den Verzeichnisverwaltungsdienst wie beschrieben in einer Webfarm einrichten und versuchen, eine Dokumentbibliothek für E-Mail zu aktivieren, ist es wahrscheinlich, dass der Fehler „Zugriff verweigert“ auftritt.
Die Fehlerinformationen geben Probleme mit Active Directory-Berechtigungen an, und SharePoint-Administratoren gewähren allen Benutzern schnell die volle Kontrolle für die SharePoint-Organisationseinheit. Dies führt jedoch nicht nur zu einer Verringerung der Active Directory-Sicherheit, sondern behebt auch nicht das Problem.
Eine strukturierte Problembehandlung erfordert, dass das Problem zunächst gefunden wird und dann zielgerichtete Konfigurationsänderungen vorgenommen werden. Wenn Sie diesem Ansatz folgen und das Windows-Ereignisprotokoll auf dem Domänencontroller prüfen und möglicherweise die Netzwerkkommunikation mithilfe von Network Monitor verfolgen, finden Sie möglicherweise heraus, dass SharePoint nicht auf Active Directory zugreift, wenn dieses Problem auftritt. Es ist daher unwahrscheinlich, dass Konfigurationsänderungen in Active Directory das Problem beheben. Das Problem wird auf dem SharePoint-Server verursacht.
Leider ist es außergewöhnlich schwierig, nützliche Informationen zu diesem Berechtigungsproblem zu erhalten. SharePoint zeichnet keine zusätzlichen Informationen im Windows-Ereignisprotokoll auf. Wenn Sie jedoch SharePoint-Debuggen aktivieren, können Sie die Aufrufliste anzeigen (siehe Abbildung 6), die anzeigt, dass der Verzeichnisverwaltungsdienst die CreateContact-Methode eines SharePoint-Webdiensts verwendet. SharePoint SDK teilt Ihnen mit, dass es sich hierbei um den E-Mail-Integrationswebdienst handelt (<WSS-Server>:<Admin-Port>/_Vti_bin/SharepointEmailWS.asmx).
Abbildung 6 Debugausgabe
Server was unable to process request. ---> Access is denied.
   at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message,      WebResponse response, Stream responseStream, Boolean asyncCall)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[]      parameters)
   at Microsoft.SharePoint.DirectorySoap.SPDirectoryManagementProxy.CreateContact(String Alias,      String FirstName, String LastName, String ForwardingEmail, ContactFlags Flags)
   at Microsoft.SharePoint.SPList.UpdateDirectoryManagementService(String oldAlias, String      newAlias)
   at Microsoft.SharePoint.SPList.Update(Boolean bFromMigration)
   at Microsoft.SharePoint.SPList.Update()
   at Microsoft.SharePoint.ApplicationPages.EmailSettingsPage.SubmitButton_Click(Object sender,      EventArgs args)
   at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
   at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
   at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String      eventArgument)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean      includeStagesAfterAsyncPoint)
Werfen wir einen Blick auf SharepointEmailWS.asmx in einem Webbrowser, um die Liste unterstützter Vorgänge anzuzeigen. Sie können die CreateContact-Methode anzeigen, und durch Klicken auf den Link „CreateContact“ werden die SOAP-Nachrichten angezeigt, die an diesen Webdienst gesendet werden müssen, wenn Sie einen Kontakt in Active Directory erstellen möchten. Dies ist nützlich, da Sie nun ein skriptbasiertes Tool für die Problembehandlung erstellen können (siehe SharepointEmailWS.vbs im Begleitmaterial), das außerhalb der SharePoint-Benutzeroberfläche eingesetzt wird und somit das Festlegen unterschiedlicher Benutzerkonten während der Testläufe erleichtert. Abbildung 7 zeigt die zurückgegebenen Informationen, wenn Sie dieses Skript unter dem Anwendungspoolkonto der Zentraladministration (links) und unter dem SharePoint-Administratorkonto (rechts) ausführen.
Abbildung 7 Zwei verschiedene „Zugriff verweigert“-Fehler (zum Vergrößern auf das Bild klicken)
Die Fehlermeldungen sind verschieden! Beide Nachrichten geben an, dass der Zugriff verweigert wurde, aber der Fehler auf der linken Seite gibt an, dass ein Verarbeitungsfehler vorliegt, der Fehler auf der rechten Seite jedoch nicht. Was also ist der Unterschied zwischen Anwendungspoolkonten und SharePoint-Administratorkonten?
Beim SharePoint-Administrator handelt es sich um einen lokalen Administrator auf dem SharePoint-Server, während Anwendungspoolkonten dies nicht sind. Durch Hinzufügen der Anwendungspoolkonten Ihrer Webanwendung zur lokalen Administratorgruppe sowie durch Neustarten des Webservers wird das Problem behoben. Dies sind allerdings nicht wirklich gute Nachrichten. Meiner Ansicht nach ist das Ausführen von Anwendungspoolkonten mit Administratorrechten auf Produktionswebservern nicht akzeptabel.
Warum benötigt ein Anwendungspoolkonto diese erhöhten Berechtigungen? Auch hier kann das Skript eine Antwort liefern. Wenn Sie allen Benutzern auf Ihrem Webserver zu Testzwecken lokale Administratorrechte erteilen, können Anwendungspoolkonten den E-Mail-Integrationswebdienst verwenden, während der Zugriff weiterhin für alle anderen Konten, einschließlich SharePoint-Administratorkonten, verweigert wird. Dies bedeutet, dass der E-Mail-Integrationswebdienst die Anwendungspoolkonfiguration als Basis für Entscheidungen zur Zugriffssteuerung verwendet.
Die Anwendungspoolkonfiguration ist ein Bestandteil der IIS-Metabasis (oder der Datei „applicationHost.config“ in IIS 7.0), und der Zugriff auf die Metabasis ist standardmäßig auf lokale Administratoren beschränkt. Es ist jedoch möglich, Nichtadministatorkonten Zugriff auf die Metabasis zu erteilen. Hierfür wird der Metabase Explorer verwendet, der mit den IIS 6.0 Resource Kit-Tools geliefert wird. In IIS 7.0 ist es sogar noch einfacher, vollen Zugriff auf die Datei „applicationHost.config“ zu gewähren. Führen Sie hierfür einfach folgende Befehle aus:
CACLS "%SystemDrive%\Windows\System32\inetsrv\config\applicationHost.config"
/G "<application pool account>" :F /E iisreset /noforce
Wie bereits erwähnt, benötigt der Anwendungspool in der Zentraladministration volle Kontrolle über Kontakt- und Gruppenobjekte in der Zielorganisationseinheit, um Kontaktobjekte in Active Directory erstellen zu können. Die Poolkonten der Webanwendung erfordern vollen Zugriff auf die Metabasis auf den SharePoint-Servern in der Webfarm. Wenn dies gegeben ist, können mithilfe der SharePoint-Benutzeroberfläche Kontaktobjekte erstellt werden.
Das ist aber noch nicht alles. Die Erstellung von Empfängerobjekten in Active Directory ist lediglich ein Teil der Verzeichnisintegration. Bei dem anderen Teil handelt es sich um die Generierung von mit Exchange verknüpften Empfängerattributen sowie um die Aktualisierung der serverbasierten Adressbücher. Wenn Sie z. B. die globale Adressliste auf dem Exchange-Server mithilfe des entsprechenden Exchange-Verwaltungsshell-Befehls (Update-GlobalAddressList "Default Global Address List") aktualisieren, werden neu erstellte Empfängerobjekte für SharePoint-Dokumentbibliotheken im Outlook-Adressbuch angezeigt. Das Senden von Nachrichten an diese Empfänger führt aber zu Unzustellbarkeitsberichten, da es sich um fehlerhafte Adressinformationen handelt (siehe Abbildung 8).
Abbildung 8 Unzustellbare Nachricht an eine Dokumentbibliothek (zum Vergrößern auf das Bild klicken)
Das Akronym IMCEAEX steht für „Internet Mail Connector Encapsulated Address for Exchange“. Es gibt eine gekapselte Nicht-Exchange-Empfängeradresse in einem Format an, das vom alten Exchange Internet Mail Connector verarbeitet werden kann. Heutzutage wird aber mit Exchange Server 2007 und systemeigenen SMTP-basierten Sendeconnectoren gearbeitet.
Der Punkt ist, dass der SharePoint-E-Mail-Integrationswebdienst nicht die Adressattribute schreibt, die von Exchange Server 2007 für die Nachrichtenübermittlung benötigt werden. Es werden lediglich Vorname, Nachname, Anzeigename und Zieladresse angegeben (und optional das msExchRequireAuthToSendTo-Attribut). E-Mail-Spitznamen, Legacy-Exchange-DN oder Proxyadresse werden nicht festgelegt, und das Empfängerobjekt wird keiner Exchange-Empfängerrichtlinie zugeordnet.
Verwenden Sie zum Beheben des Problems das Cmdlet „Get-Mailbox“ in der Exchange-Verwaltungsshell, um alle Empfängerobjekte mit einer Zieladresse abzurufen, die auf die SharePoint-E-Mail-Domäne zeigt. Leiten Sie die Ausgabe zum Cmdlet „Set-MailContact“, um Exchange-Empfängerrichtlinien wie folgt zu aktivieren:
Get-Contact | where { $_.WindowsEmailAddress –like
  '*sharepoint.contoso.com' } | Set-MailContact
  -EmailAddressPolicyEnabled:$True
Alternativ können Sie auch die Exchange-Verwaltungskonsole verwenden und das Kontrollkästchen „E-Mail-Adressen automatisch basierend auf der E-Mail-Adressenrichtlinie aktualisieren“ in den Kontaktobjekteigenschaften aktivieren.

WSS 3.0 und MOSS 2007 unterstützen standardmäßig eine volle Messagingintegration, um das Übermitteln von E-Mail-basierten Warnungen und Benachrichtigungen, Workflows und Dokumenteinreichungen zu aktivieren. Obwohl es sich bei der korrekten Konfiguration des Systems nicht um eine einfache Aufgabe handelt, kann Messagingintegration die Arbeitsproduktivität steigern. Es muss v. a. sichergestellt werden, dass die eingehende und ausgehende Nachrichtenübermittlung fehlerfrei funktioniert. Es sollte auch sichergestellt werden, dass die Verzeichnisintegration funktioniert.
SharePoint-Fehlermeldungen sind nicht immer intuitiv oder informativ. In diesem Artikel werden jedoch Möglichkeiten aufgezeigt, Integrationsprobleme zu untersuchen, Hauptursachen zu erkennen und sie zuverlässig zu beseitigen, ohne die Sicherheit auf den SharePoint-Servern gefährden zu müssen.

Pav Cherny ist IT-Experte und Autor und ist auf Microsoft-Technologien für Zusammenarbeit und einheitliche Kommunikation spezialisiert. Seine Veröffentlichungen enthalten Whitepaper, Produkthandbücher sowie Bücher mit dem Schwerpunkt IT-Vorgänge und Systemverwaltung. Pav Cherny ist Präsident der Biblioso Corporation. Dieses Unternehmen ist auf verwaltete Dokumentations- und Lokalisierungsdienste spezialisiert.


Windows PowerShell Eine Vorschau auf die Remoteverwaltung in Version 2.0
Don Jones

Dieser Artikel basiert auf einer Vorabversion von Windows PowerShell. Änderungen an den in diesem Artikel enthaltenen Informationen sind vorbehalten.

Inhalt
Zwei Arten von Remoting
Synchron oder asynchron
Wiederverwendbare Runspaces
Fan-In-Remoting
Das Prunkstück in 2.0
Hatten Sie schon Gelegenheit, mit der aktuellen Community Technology Preview (CTP) von Windows PowerShell 2.0 zu experimentieren? Die aktuelle Version CTP2 bietet weiterentwickelte Remoteverwaltung, und jetzt ist genau der richtige Zeitpunkt, um sich mit ihren neuen Funktionen vertraut zu machen. Bevor ich anfange, sollten Sie sich etwas Zeit nehmen, um
CTP2 unter go.microsoft.com/fwlink/?LinkID=119707 herunterzuladen.
Lassen Sie mich zuerst einige wichtige Punkte erklären. Bei einer CTP-Version handelt es sich um Vor-Betacode, den Microsoft bereitstellt, um ungeduldigen Benutzern wie mir eine Vorstellung davon zu geben, wie weit Microsoft mit der nächsten Version einer Anwendung schon ist. Jeder CTP-Meilenstein oder -Drop (wie es in der Branche genannt wird) kann sich vollständig von früheren Drops unterscheiden. Das liegt daran, dass das Entwicklungsteam Rückmeldungen sammelt, sie sorgfältig prüft und dann auf der Grundlage dieses Benutzerfeedbacks Änderungen an der Anwendung vornimmt. Diese Methodik bringt für Ihre Verwendung der CTP-Version einen erheblichen Vorteil sowie auch einen erheblichen Nachteil.
Video
Sehen Sie Don Jones bei der Vorführung der neuen Remoteverwaltungsfunktionen in Windows PowerShell 2.0 CTP2 zu.

Der Vorteil besteht darin, dass, wenn Sie die CTP-Version verwenden, Sie (über die Website connect.microsoft.com) noch während der Entwicklung Feedback zum Produkt geben können, also dann, wenn das Team noch auf dieses Feedback reagieren kann! Wenn Sie bis zur Phase der Betaversion oder, schlimmer noch, bis zur Phase des Release Candidate warten, lässt sich Ihr Feedback nur sehr viel schwieriger berücksichtigen. Während der CTP-Phase ist alles möglich, und das Team kann bei Bedarf noch umfangreiche und radikale Änderungen vornehmen.
Damit komme ich zum Nachteil. Die CTP-Version ist nicht für den Produktionsbetrieb geeignet. Zwar ist Windows PowerShell™ 2.0 CTP2 möglicherweise einer der stabilsten Vorabcodes, den Sie gesehen haben, aber bedenken Sie, dass der nächste CTP-Drop eine vollständig andere Anwendung sein kann. Fangen Sie also nicht an, sich auf CTP2 zu verlassen, denn die nächste Version zwingt Sie möglicherweise, ganz von vorn zu beginnen.
Beachten Sie, dass die CTP-Version nicht parallel mit Windows PowerShell 1.0 installiert werden kann. Für eine ideale Einrichtung sollte auf dem System auch das Microsoft® .NET Framework 3.5 installiert sein, um den vollen Featureumfang nutzen zu können. Andernfalls sind einige Features begrenzt.
Da die CTP-Version ein sehr früher Code ist, hat Microsoft außerdem bisher den größten Wert darauf gelegt, dass die Anwendung unter den aktuellen Betriebssystemen läuft, also unter Windows Vista® und Windows Server® 2008. Eine Kompatibilität mit aktuellen Betriebssystemen ist kein Hinweis auf die Betriebssystemkompatibilität, die Sie für den endgültig veröffentlichten Code erwarten können. Der Rückportierung wird erst später im Entwicklungszyklus Aufmerksamkeit gewidmet.

Zwei Arten von Remoting
Im Bereich der Remoteverwaltung findet man meist zwei Arten von Remoting: Fan-In und Fan-Out. Fan-In-Remoting umfasst mehrere Administratoren, die Secure Shell-Verbindungen zu einem einzigen Server herstellen. Windows PowerShell ist so ausgelegt, dass es dies in einer sicheren, partitionierten Weise ermöglicht, sodass z. B. ein Unternehmen, das Exchange Server bereitstellt, seinen Kunden Administratorzugriff auf ihre Bereiche eines Servers bieten kann. Mit Fan-In-Remoting erhalten Sie von einem Remotestandort aus sicheren interaktiven Zugriff auf die Kopie von Windows PowerShell (nur Version 2.0!), die auf einem Remoteserver installiert ist.
Fan-Out-Remoting findet statt, wenn Sie einen Satz von Befehlen an eine ganze Gruppe von Remoteservern gleichzeitig ausgeben. Die Befehle werden sich gleichzeitig von Ihrer Arbeitsstation „fächerauswärts“ zur Servergruppe gesendet. Die Befehle werden auf jedem Server ausgeführt, und die Ergebnisse werden in Form von Windows PowerShell-Objekten an Ihre Arbeitsstation zurückgegeben, sodass Sie sie überprüfen und mit ihnen arbeiten können. Windows PowerShell unterstützt zwei Kerntechnologien für Fan-Out-Remoting: Windows®-Verwaltungsinstrumentation (Windows Management Instrumentation, WMI) und Windows Remote Management (WinRM), das zuerst mit Windows Server 2008 ausgeliefert und dann in der Windows PowerShell 2.0 CTP-Version aktualisiert wurde.

Synchron oder asynchron
Eigentlich hatte sogar Windows PowerShell 1.0 ein paar grundlegende Fan-Out-Funktionen, die an WMI gebunden waren. So konnte man beispielsweise problemlos ein Array von Computernamen erstellen und dann von jedem eine WMI-Klasse abrufen:
$names = @("server1","server2","server2")
Get-WmiObject Win32_OperatingSystem
    –computer $names
Das Ausführen von Methoden, wie z. B. der Neustart eines Computers, erforderte einen etwas höheren Arbeitsaufwand, da Version 1.0 kein Verfahren bot, WMI-Methoden bündelweise auszuführen. Dies hat sich jedoch in Version 2.0 CTP dank des Cmdlets „Invoke-WmiMethod“ geändert:
$names = @("server1","server2","server2")
Get-WmiObject Win32_OperatingSystem     –computer $names | `
 Invoke-WmiMethod Reboot
Allerdings gibt es ein Problem mit diesem Verfahren. Es ist synchron, was bedeutet, dass jeder Computer einzeln angesprochen wird und Sie bei jedem warten müssen, bis er fertig ist, bevor Sie andere Befehle ausführen können. Die CTP-Version führt aber ein neues Konzept ein – die Hintergrundaufträge –, mit denen sich Befehle wie dieser im Hintergrund ausführen lassen. Im einfachsten Fall können Sie durch bloßes Hinzufügen des Parameters „–AsJob“ einen WMI-Befehl im Hintergrund ausführen:
$names = @("server1","server2","server2")
Get-WmiObject Win32_OperatingSystem     –computer $names -asjob
Sie können den Status des entstehenden Auftrags durch Ausführen von Get-PSJob überprüfen und das Endergebnis des Auftrags durch Ausführen von Receive-PSJob anzeigen. (In einem künftigen Artikel werde ich mich eingehender mit den Einzelheiten der Auftragverwaltung beschäftigen.) Das Cmdlet „Invoke-Command“ bietet jedoch eine noch bessere Möglichkeit, Befehle im Hintergrund auszuführen, und zwar so:
$command = { Get-WmiObject     Win32_OperatingSystem }
$names = @("server1","server2","server2")
Invoke-Command –command $command     –computer $names –asjob
Dieses sendet nämlich mit der Push-Methode den Befehl „Get-WmiObject“ an jeden angegebenen Computer und führt ihn dann lokal aus. Er wird in der Regel viel schneller ausgeführt, und ohne von den WMI-RPC-Verbindungen (remote procedure call, Remoteprozeduraufruf) abhängig zu sein. Stattdessen setzt Invoke-Command WinRM ein, das standardmäßig Port 80 oder 443 verwendet. Diese Ports machen es einfach, Firewalls zu passieren, und sind vollständig konfigurierbar. Invoke-Command unterstützt auch zusätzliche Parameter für alternative Anmeldeinformationen und Einschränkung, was Ihnen ermöglicht, auf Hunderte von Computern abzuzielen, von denen aber nur einige wenige parallel laufen. So können Sie Überlastung und übermäßigen Aufwand vermeiden.

Wiederverwendbare Runspaces
Wenn Sie vorhaben, eine bestimmte Gruppe von Computern mehr als einmal von einem Remotestandort aus zu verwalten, sollten Sie in Erwägung ziehen, Runspaces anstelle einfacher Listen von Computernamen zu verwenden. In Windows PowerShell ist ein Runspace einfach eine Instanz des Shell-Moduls, unabhängig davon, ob es lokal auf Ihrem Computer als Shell-Konsolenfenster oder im Hintergrund auf einem Remotecomputer ausgeführt wird. Ein Remoterunspace ist leicht zu starten:
$names = @("server1","server2","server2")
New-RunSpace –computer $names
Da Runspaces auch WinRM verwenden, verwenden sie standardmäßig auch Port 80 (oder 443, wenn Sie den –UseSSL-Parameter angeben). Sie können auch alternative Anmeldeinformationen akzeptieren und so weiter. Wenn Sie die entstehenden Runspaceobjekte abrufen, können Sie diese an Invoke-Command übergeben, und Windows PowerShell sendet den Befehl mit der Push-Methode zu den Computern, auf denen diese Runspaces vorhanden sind:
$command = { Get-WmiObject     Win32_OperatingSystem }
$rs = Get-Runspace
Invoke-Command –command $command     –runspace $rs –asjob
Der Vorteil besteht dabei darin, dass die Runspaces so lange aktiv bleiben, wie die Shell offen ist, sodass Sie sie für zusätzliche Befehle einfach wiederverwenden können.

Fan-In-Remoting
Runspaces sind auch der Schlüssel zum Fan-In-Remoting. So zeigt z. B. Abbildung 1, dass ich einen Runspace auf einem Remotecomputer erstellt, einen Verweis auf diesen Runspace abgerufen und dann mithilfe des Cmdlets „Push-Runspace“ den Runspace aktiviert habe. Dann führe ich auf dem Remotecomputer Befehle aus, ähnlich wie SSH oder andere Remoteshelldienstprogramme sie ermöglichen würden. Die Ausführung von Pop-Runspace bringt mich zu meinem ursprünglichen „lokalen“ Runspace zurück, und die Eingabeaufforderung der Shell hilft mir zu verfolgen, wo ich mich gerade befinde.
Abbildung 1 Ausführung von Befehlen auf einem Remotecomputer mithilfe von Runspace (zum Vergrößern auf das Bild klicken)
Die genaue Befehlsfolge, die ich ausgeführt habe, lautet folgendermaßen:
PS C:\>new-runspace -computer     "WIN-YFZXQMHXAWM"
PS C:\>$server2 = get-runspace -sessionid 2
PS C:\>push-runspace $server2
[win-yfzxqmhxawm]: PS C:\Windows\System32>    pop-runspace
PS C:\>
Dieses Verfahren wird „Fan-In“ genannt, weil mehrere Administratoren gleichzeitig auf demselben Server interaktive Remoterunspaces öffnen können: sie laufen sich „fächereinwärts“ von ihren jeweiligen Arbeitsstationen zum Server. Ein neues Sicherheitsmodell in Windows PowerShell 2.0 ermöglicht Ihnen, eingeschränkte Shells und Cmdlets zu erstellen. So kann verhindert werden, dass Administratoren globale Änderungen vornehmen. Jeder Administrator wird auf seinen eigenen Bereich der Shell begrenzt. (Diese neuen Sicherheitsverfahren erfordern eine benutzerdefinierte Softwareentwicklung in einer an .NET Framework angepassten Sprache. Dieses Thema geht über den Rahmen der Rubrik zu Windows PowerShell hinaus, aber es ist nützlich zu wissen, dass es diese Funktionen gibt.)

Das Prunkstück in 2.0
Die Windows PowerShell 2.0 CTP-Version bietet eine beeindruckende Liste neuer Features. Meiner Meinung nach ist Remoting das Prunkstück. Jeder Administrator in beinahe jeder Umgebung kann sie nutzen.
Sie sollten sich mit diesen Features vertraut machen, damit Sie dem Produktteam Ihre Vorschläge unterbreiten können. Möchten Sie, dass WinRM-Standardports über die Gruppenrichtlinie verwaltet werden? Sollen die Cmdlets anders funktionieren? Gibt es Leistungsprobleme? Ist WinRM genügend einfach zu konfigurieren? Sie können die weitere Entwicklung beeinflussen, indem Sie Vorschläge an connect.microsoft.com senden oder Ihr Feedback mit Empfängern der MVP-Auszeichnung einschließlich meiner Person teilen (um mich zu erreichen, senden Sie Ihr Feedback an die Foren unter ScriptingAnswers.com). Beteiligen Sie sich, und helfen Sie, das Prunkstück für die nächste Generation von Windows PowerShell zu erstellen!
Cmdlet des Monats: Select-Object
Probieren Sie dies aus: Get-Service | ConvertTo-HTML | Out-File Services.htm. Sehen Sie sich jetzt die resultierende HTML-Datei in Ihrem Webbrowser an. Sie enthält ziemlich viele Informationen, nicht wahr? Wenn es nur eine Möglichkeit gäbe, sie ein wenig zurechtzustutzen und nur die für Sie interessanten Informationen auszuwählen. Genau das kann Select-Object für Sie tun. Sagen wir z. B., dass Sie nur eine Liste von Dienstnamen mit deren aktuellen Status haben möchten. Dann können Sie Folgendes verwenden: Get-Service | Select Name,Status | ConvertTo-HTML | Out-File Services.htm.
Sie müssen dabei allerdings beachten, dass Select-Object das ursprüngliche Objekt – in diesem Fall Dienste – verwirft und ein benutzerdefiniertes Objekt erstellt (buchstäblich einen PSCustom-Objekttyp), der nur die Eigenschaften enthält, die Sie angegeben haben. Manche Funktionen des ursprünglichen Objekts sind nicht mehr zugänglich. Deshalb werden Sie Select-Object wahrscheinlich möglichst spät verwenden und so lange wie möglich mit dem ursprünglichen Objekt arbeiten wollen.

Don Jones ist Mitautor von „Windows PowerShell v2.0: TFM“ und der Schulungsleiter hinter den „Special Forces“-Seminaren unter ScriptingAnswers.com (scriptinganswers.com/training.asp). Er ist unter jeepdon@mac.com zu erreichen.


Hey, Scripting Guy! Auf der Schnellstraße
Die Scripting Guys von Microsoft

In den letzten Monaten durfte einer der Scripting Guys hier im Raum Seattle etwas Neues erleben. Dabei handelt es sich um ein Programm, das in mehreren Städten der USA getestet wird und als „elektronisches Mautsystem“ bezeichnet wird. Im Bundesstaat Washington heißt es jedoch „Good to Go!“.
Es funktioniert ungefähr folgendermaßen: Sie kaufen ein elektronisches Gerät, das Sie an Ihrer Windschutzscheibe befestigen. Zudem eröffnen Sie ein Konto, auf das Sie etwas Geld einzahlen. Jedes Mal, wenn Sie unter einer der Überwachungseinrichtungen auf der Autobahn hindurchfahren, wird von Ihrem Konto automatisch eine Gebühr abgebucht. Im Grunde bezahlen Sie dafür, auf der Autobahn fahren zu dürfen (somit sind unsere Freeways nicht wirklich kostenfrei – offenbar müssen wir sie von nun an „Highways“ nennen, obwohl einige von ihnen vor kurzem tief unter Wasser standen, was sie auch nicht besonders hoch erscheinen ließ), ohne jemals an einem Mauthäuschen anhalten zu müssen.
An vielen Orten, an denen jetzt Mautgebühren erhoben werden, müssen Fahrgemeinschaften nichts bezahlen. Das Interessante an „Good to Go!“ ist jedoch, dass das System nur in der Fahrgemeinschaften vorbehaltenen Spur funktioniert. Sie fragen sich, worin da der Sinn liegt? Warum würde jemand eine Fahrgemeinschaft gründen, wenn er dann doch bezahlen muss? Nun, das muss er nicht. Dieses System ist nur für Personen gebührenpflichtig, die die Spur für Fahrgemeinschaften benutzen möchten, wenn sie allein in ihrem Auto fahren. Der naheliegende Grund für das Benutzen der Spur für Fahrgemeinschaften besteht darin, dass sich in der Regel weniger Fahrzeuge auf dieser Spur befinden. Manchmal ist die Spur für Fahrgemeinschaften die einzige Spur, auf der sich die Autos tatsächlich vorwärts bewegen.
Wie bereits erwähnt, befindet sich dieses System noch in der Erprobungsphase, obwohl sich bereits Tausende dafür angemeldet haben. Es gibt eine Menge Menschen im Raum Seattle, die bereit sind, Geld dafür zu bezahlen, eine Schnellstraße benutzen zu dürfen, um an ihr Ziel zu gelangen.
Im Artikel dieses Monats haben die Scripting Guys beschlossen, ihr eigenes kleines Experiment durchzuführen. Wir möchten Ihnen eine „Schnellstraße“ namens Microsoft® Visual Basic® Express Edition vorstellen. Als Erstes können wir Ihnen mitteilen, dass einer der tollsten Aspekte dieses Produkts darin besteht, dass es wirklich kostenfrei ist. Es werden keine Gebühren erhoben, unabhängig davon, wo Sie diese Informationen verwenden, von wie vielen Benutzern sie verwendet werden oder wie spät es ist. Klingt ziemlich gut, nicht wahr? Natürlich kann es so erscheinen, als ob doch ein geringer Preis damit verbunden ist, da Sie einige neue Dinge lernen müssen. Vielleicht entscheiden Sie jedoch, dass die Vorteile es wert sind.
Bevor wir fortfahren, möchten wir erwähnen, dass uns bewusst ist, dass wir unsere Grenzen ein wenig überschreiten. In der Regel wären die Visual Studio®-Produkte wie Visual Basic und Visual C#® Themen für das MSDN® Magazin und nicht für das TechNet Magazin. Da jedoch MSDN und TechNet anscheinend mehr und mehr zu einer großen zerrütt... – äh, glücklichen – Familie zusammenwachsen, hoffen wir, dass uns diesbezüglich ein kleiner Spielraum gewährt wird. Zudem gilt: Obwohl wir über die Arbeit mit einem traditionellen Entwicklertool schreiben, richten sich unsere Ausführungen nach wie vor an Windows®-Systemadministratoren. Im weiteren Verlauf dieses Artikels werden Sie verstehen, was wir meinen.
Als Erstes müssen Sie Visual Basic installieren. Nein, warten Sie. Laufen Sie nicht weg, nach dem Motto: „Das habe ich nicht!“ oder „Das kann ich mir nicht leisten!“. Microsoft bietet eine Express Edition von Visual Basic an, die Sie unter microsoft.com/express/download kostenlos herunterladen können.
Wir werden hinsichtlich der Arbeit mit Visual Basic Express nicht ins Detail gehen. In der Hilfe sind Lernprogramme enthalten, und die Hilfe selbst ist tatsächlich ziemlich gut. (Kaum zu glauben, oder?) Wir zeigen Ihnen jedoch, wie Sie mithilfe von Visual Basic Express ein bestimmtes Problem in Windows Vista® lösen können (obwohl dieses Beispiel auch bei früheren Versionen von Windows funktioniert). Anschließend können Sie auf eigene Faust damit weiterexperimentieren. Wir werden folgendes Problem lösen: Wie öffnet man in Windows Vista ein Dialogfeld zum Öffnen von Dateien?
Wir haben bereits vor einigen Jahren erklärt, wie ein Dialogfeld zum Öffnen von Dateien mithilfe eines Skripts geöffnet werden kann (siehe den Artikel „Anzeigen eines Dialogfelds für die Auswahl von Dateien“ unter microsoft.com/technet/scriptcenter/resources/qanda/jan05/hey0128.mspx). Dieser Artikel wurde im Januar 2005 veröffentlicht, lange vor der Entwicklung von Windows Vista. Bei der Lösung wird mithilfe des ActiveX®-Steuerelements „UserAccounts.CommonDialog“ ein Dialogfeld zum Öffnen von Dateien geöffnet, in dem Sie nach einer zu öffnenden Datei suchen können. Leider ist dieses Steuerelement ab Windows Vista nicht mehr in Windows enthalten, was bedeutet, dass diese Lösung auf neueren Systemen nicht funktioniert. (Nein, uns hat niemand gefragt, ob das eine gute Idee sei.) Dies bedeutet, dass es unseres Wissens keine Möglichkeit gibt, ein Dialogfeld zum Öffnen von Dateien mithilfe von VBScript zu öffnen. Statt ein Skript zu schreiben, verwenden wir daher Visual Basic zum Schreiben einer Anwendung. Mit dieser Anwendung kann dann unter anderem ein Dialogfeld zum Öffnen von Dateien geöffnet werden.
Ja, Sie haben richtig gehört: In dem Beispiel, das wir Ihnen zeigen werden, wird eine vollständige Anwendung in Visual Basic erstellt. Das klingt vielleicht zuerst ein wenig beängstigend, aber Sie werden sehen, dass Sie mit Visual Basic Express eine vollständige Anwendung genauso einfach wie ein Skript schreiben können. Diese Anwendung wird aus einem Fenster oder Formular bestehen, in dem Sie auf eine Schaltfläche klicken können, über die ein Dialogfeld zum Öffnen von Dateien geöffnet wird. Sie können dann in diesem Dialogfeld Textdateien auswählen, und die Anwendung liest Daten aus diesen Textdateien und zeigt im Formular einen ausgewählten Satz von Inhalten an.
Gut, fangen wir also an. Zunächst wird Visual Basic Express geöffnet. Im ersten Schritt müssen Sie ein neues Projekt erstellen. Hierzu wählen Sie im Menü „Datei“ die Option „Neues Projekt“. Dadurch wird das Dialogfeld „Neues Projekt“ geöffnet. (Wenn Sie eine ältere Version von Visual Basic Express als 2008 verwenden, werden Sie einige kleine Unterschiede gegenüber den Beschreibungen in diesem Artikel feststellen.) Da Sie eine Windows Forms-Anwendung erstellen, wählen Sie die Vorlage „Windows Forms-Anwendung“ aus, und geben Sie den Namen ein, den Sie Ihrem Projekt geben möchten. Im Beispiel wurde das Projekt „ReadFiles“ genannt, wie Sie in Abbildung 1 sehen können.
Abbildung 1 Erstellen eines neuen Projekts in Visual Basic (zum Vergrößern auf das Bild klicken)
Wenn das Projekt erstellt wird, wird automatisch ein neues Formular bereitgestellt, mit dem Sie arbeiten können. In der Anwendung, die Sie erstellen, wird ein Formular angezeigt, das wie das Formular in Abbildung 2 aussieht. Wie bereits erwähnt, enthält das Formular eine Schaltfläche, durch die, wenn auf sie geklickt wird, das Dialogfeld zum Öffnen von Dateien mit dem Ordner „C:\Scripts“ angezeigt wird. Der Benutzer kann dann eine oder mehrere Textdateien an beliebigen Speicherorten im Dateisystem auswählen. Die Anwendung liest dann die erste Zeile aus jeder der ausgewählten Textdateien und zeigt die Ergebnisse im Listenfeld im Formular an. (Falls Ihnen das bekannt vorkommt, haben Sie wahrscheinlich im Anfängerbereich an den Scripting Games 2008 teilgenommen: microsoft.com/technet/scriptcenter/funzone/games/games08/bevent3.mspx.)
Abbildung 2 Das angezeigte ReadFiles-Formular
Um das Formular zu erstellen, müssen Sie Steuerelemente aus der Toolbox in das Projektformular ziehen. Standardmäßig ist die Toolbox auf der linken Seite des Visual Basic-Fensters geöffnet. (Wenn die Toolbox nicht geöffnet ist, klicken Sie auf der linken Seite des Visual Basic-Arbeitsbereichs auf die Schaltfläche „Toolbox“, und erweitern Sie „Alle Windows Forms“.) Klicken Sie in der Toolbox auf „Schaltfläche“, und ziehen Sie dann den Mauszeiger über das Formular, um die Schaltfläche mit der gewünschten Größe zu erstellen. Um der Schaltfläche eine Beschriftung hinzuzufügen, klicken Sie auf die Schaltfläche, die Sie dem Formular gerade hinzugefügt haben, und geben Sie die gewünschte Beschriftung ein. (Alternativ können Sie die Text-Eigenschaft im Dialogfeld „Eigenschaften“ bearbeiten, das sich standardmäßig rechts unten im Visual Basic-Arbeitsbereich befindet.) Im Beispiel wurde die Schaltfläche mit „Browse for Files“ (Nach Dateien suchen) beschriftet. Klicken Sie als Nächstes auf „ListBox“ und dann erneut auf das Formular, und ziehen Sie die Maus, um das Listenfeld zu erstellen. Das Listenfeld wird zum Anzeigen der Zeilen verwendet, die aus den Textdateien ausgelesen werden.
Damit ist die Erstellung des Formulars abgeschlossen. Jetzt kommt der unterhaltsame Teil: Sie müssen dafür sorgen, dass eine Aktion durchgeführt wird, wenn Sie auf die Schaltfläche klicken. Doppelklicken Sie zunächst auf das Schaltflächen-Steuerelement im Formular. Dadurch wird der Code-Editor mit einer bereits für Sie erstellten neuen Unterroutine geöffnet, der Unterroutine „Button1_Click“:
Private Sub Button1_Click _
  (ByVal sender As System.Object, _
   ByVal e As System.EventArgs) _
  Handles Button1.Click
End Sub
Diese Unterroutine wird immer dann ausgeführt, wenn auf die Schaltfläche im Formular geklickt wird. Wie Sie sehen können, ist diese Unterroutine momentan leer. Sie müssen den Code hinzufügen, der der Anwendung mitteilt, welche Aktion beim Klicken auf die Schaltfläche durchgeführt werden soll. Welche Aktion soll nun durchgeführt werden? Nun, zuerst soll das getan werden, von dem wir Ihnen am Anfang dieses Artikels versprochen haben, dass wir es Ihnen zeigen würden: das Öffnen eines Dialogfelds zum Öffnen von Dateien. Wie bei nahezu allen Schritten, die Sie mit Visual Basic durchführen, wird hierfür Microsoft .NET Framework verwendet.
Zunächst werden oberhalb der Unterroutine zwei Imports-Anweisungen hinzugefügt:
Imports System
Imports System.IO
Diese Anweisungen geben .NET Framework-Namespaces an. Da Sie Klassen aus diesen Namespaces verwenden werden, importieren Sie sie an dieser Stelle, damit Sie einfach auf die gewünschten Klassen verweisen können. Beachten Sie, dass wir gesagt haben, dass Sie diese Anweisungen oberhalb der Unterroutine einfügen sollten. Imports-Anweisungen sind global, was bedeutet, dass sie nicht innerhalb einer Unterroutine oder Funktion verwendet werden können. Sie müssen außerhalb dieser Elemente für sich allein stehen.
Sofern Sie nicht die Option Explicit-Anweisung am Anfang Ihres Skripts hinzufügen, müssen Sie in VBScript Variable nicht explizit deklarieren. In Visual Basic wird diese Anweisung automatisch hinzugefügt, sodass Sie alle Variablen deklarieren müssen. Sie benötigen eine Variable zum Speichern eines Verweises auf das OpenFileDialog-Objekt (das zufällig das Dialogfeld zum Öffnen von Dateien darstellt):
Dim dlg As Windows.Forms.OpenFileDialog
Nachdem Sie nun eine Variable vom Typ „OpenFileDialog“ (mit „Dim“) deklariert haben, können Sie folgendermaßen eine neue Instanz dieses Objekts erstellen:
dlg = New OpenFileDialog()
Sie haben jedoch noch immer nicht das Dialogfeld angezeigt. Zuerst müssen Sie einige Eigenschaften festlegen:
dlg.Multiselect = True
dlg.InitialDirectory = "c:\scripts"
dlg.Filter = "txt files (*.txt)|*.txt|" & _
  "All files (*.*)|*.*"
Die Multiselect-Eigenschaft gibt an, ob der Benutzer mehr als eine Datei im Dialogfeld zum Öffnen von Dateien auswählen darf. Sie möchten, dass er dazu in der Lage ist, und setzen diese Eigenschaft daher auf „True“. Die InitialDirectory-Eigenschaft wird auf „C:\Scripts“ gesetzt. Wenn Sie diese Eigenschaft nicht festlegen, wird im Dialogfeld das Hauptverzeichnis des Computers geöffnet.
Zu guter Letzt legen Sie die Filter-Eigenschaft fest:
dlg.Filter = "txt files (*.txt)|*.txt|" & _
  "All files (*.*)|*.*"
Hierbei wird gefiltert, welche Dateien im Dialogfeld angezeigt werden. Es sollen nur .txt-Dateien angezeigt werden. Durch Festlegen dieser Eigenschaften erhalten Sie ein Dialogfeld zum Öffnen von Dateien, das so ähnlich wie das in Abbildung 3 aussieht.
Abbildung 3 Das Dialogfeld „Öffnen“, in dem nur Textdateien angezeigt werden (zum Vergrößern auf das Bild klicken)
Jetzt ist es endlich an der Zeit, das Dialogfeld anzuzeigen. Hierzu verwenden Sie die ShowDialog-Methode:
dlg.ShowDialog()
Die ShowDialog-Methode gibt einen Wert zurück, der angibt, ob der Benutzer auf „Öffnen“ geklickt hat, um die ausgewählten Dateien zu öffnen, oder ob er auf „Abbrechen“ geklickt hat, um das Dialogfeld zu schließen. Wenn der Benutzer auf „Abbrechen“ klickt, soll keine Aktion durchgeführt werden. Daher fügen Sie den Aufruf von ShowDialog in eine If-Anweisung ein, um sicherzustellen, dass der Benutzer auf „Öffnen“ geklickt hat, bevor fortgefahren wird:
If dlg.ShowDialog() = _
  Windows.Forms.DialogResult.OK Then
Ja, wir wissen, dass anstelle der Open-Eigenschaft die OK-Eigenschaft geprüft wurde. Im Grunde ist die Schaltfläche „Öffnen“ jedoch mit der Schaltfläche „OK“ identisch – es ist einfach viel sinnvoller, die Schaltfläche „Öffnen“ anzuzeigen.
Jetzt müssen Sie wissen, welche Dateien der Benutzer im Dialogfeld ausgewählt hat. Die Dateinamen sind in der FileNames-Eigenschaft des OpenFileDialog-Objekts enthalten. Daher richten Sie eine For Each-Schleife ein, um die in dieser Eigenschaft enthaltenen Dateinamen zu lesen:
For Each strName In dlg.FileNames
Hoppla! Es wurde vergessen, strName zu deklarieren:
Dim strName As String
Jetzt müssen Sie jede dieser Dateien öffnen und Daten aus ihnen lesen. Hierzu verwenden Sie in Visual Basic einen Using-Block:
Using sr As StreamReader = File.OpenText(strName)
VBScript-Skriptersteller sind mit Using-Blöcken nicht vertraut, da sie in VBScript nicht existieren. Mit Visual Basic können Systemressourcen etwas besser (zugegeben, in vielen Fällen viel besser) als mit VBScript verwaltet werden. Der Sinn einer Using-Anweisung besteht darin sicherzustellen, dass beim Beenden des Blocks Systemressourcen freigegeben werden. In diesem Fall stellen Sie einfach sicher, dass Dateiinhalte und große Speicherblöcke freigegeben werden.
Wir wissen, dass das ein wenig kompliziert klingt. Sie sollten dies jedoch einfach wie eine Set-Anweisung betrachten. Es wird einfach eine Instanz eines neuen Objekts – in diesem Fall ein StreamReader-Objekt – erstellt und dem von der File.OpenText-Methode zurückgegebenen Textdatenstrom zugewiesen. Beachten Sie, dass der Name der zu öffnenden Datei an OpenText übergeben wird – die Datei aus der FileNames-Auflistung, die derzeit durchlaufen wird.
Daher enthält die StreamReader-Variable „sr“ den Inhalt der Datei. Jetzt benötigen Sie eine weitere Variable:
Dim strLine As String
Diese Variable wird zum Speichern der ersten Zeile der gerade geöffneten Textdatei verwendet:
strLine = sr.ReadLine()
Die erste Zeile wird aus der Datei gelesen, indem die ReadLine-Methode für das StreamReader-Objekt aufgerufen wird. (Wie bereits erwähnt, enthält das StreamReader-Objekt den Inhalt der Datei.) Sie speichern diese Textzeile in der Variablen „strLine“.
Jetzt rufen Sie einfach die Add-Methode für das ListBox-Objekt auf, um dem Listenfeld diese Zeile hinzuzufügen:
ListBox1.Items.Add(strLine)
In diesem Beispiel wird nur die erste Zeile der Datei gewünscht, sodass StreamReader – der vollständige Text der Textdatei wird nicht mehr benötigt – und der Using-Block geschlossen werden können:
sr.Close()
End Using
Danach wird die Schleife erneut durchlaufen, um nach der nächsten Datei zu suchen, die im Dialogfeld zum Öffnen von Dateien ausgewählt wurde. Dieser Vorgang wird so lange wiederholt, bis alle ausgewählten Dateien gelesen und dem Listenfeld alle Zeilen hinzugefügt wurden. Der fertige Code sieht wie der in Abbildung 4 aus.
Abbildung 4 Vollständiger ReadFiles-Code
Imports System
Imports System.IO

Public Class Form1

  Private Sub Button1_Click _
   (ByVal sender As System.Object, _
    ByVal e As System.EventArgs) _
   Handles Button1.Click
    Dim dlg As Windows.Forms.OpenFileDialog
    Dim strName As String

    dlg = New OpenFileDialog()

    dlg.Multiselect = True
    dlg.InitialDirectory = "c:\scripts"
    dlg.Filter = "txt files (*.txt)|" & _
      "*.txt|All files (*.*)|*.*"

    If dlg.ShowDialog() = _
     Windows.Forms.DialogResult.OK Then
      For Each strName In dlg.FileNames
        Using sr As StreamReader = _
         File.OpenText(strName)
          Dim strLine As String
          strLine = sr.ReadLine()
          ListBox1.Items.Add(strLine)
          sr.Close()
        End Using
      Next
    End If
Sehen Sie, wir haben Ihnen doch gesagt, dass das Erstellen einer Anwendung nicht viel schwieriger ist als das Erstellen eines Skripts.
Sie können Ihre Anwendung testen, indem Sie F5 drücken (oder auf der Symbolleiste „Debuggen“ auf die Schaltfläche „Debugging starten“ klicken). Wenn Sie auf die Schaltfläche klicken und dann eine oder mehrere Dateien im Dialogfeld zum Öffnen von Dateien auswählen, sollten die Ergebnisse in etwa wie in Abbildung 5 aussehen.
Abbildung 5 Die im Listenfeld angezeigten ersten Zeilen ausgewählter Dateien
Wenn Ihre Anwendung genau wie vorgesehen ausgeführt wird, wählen Sie im Menü „Erstellen“ die Option „ReadFiles (bzw. Name Ihres Projekts) erstellen“ aus. Dadurch wird eine .exe-Datei namens „ReadFiles.exe“ erstellt, die Sie genau wie jede andere Anwendung ausführen und an Ihre Benutzer verteilen können.
Uns ist bewusst, dass Ihnen dieses Verfahren möglicherweise nicht wie eine „Schnellstraße“ zur Verwendung des Dialogfelds zum Öffnen von Dateien vorgekommen ist. Wenn Sie aber die Tatsache berücksichtigen, dass dies ab Windows Vista durch Schreiben eines Skripts überhaupt nicht möglich ist, erscheint das Schreiben einer einfachen Anwendung möglicherweise wie ein geringer Preis. Erneut lässt sich dieses Verfahren mit dem Zahlen einer Gebühr für das Benutzen der Autobahn vergleichen: Es kann etwas umständlich sein, aber letzten Endes erreichen Sie Ihr Ziel.
Ein zusätzlicher Vorteil der Verwendung von Visual Basic für einen solchen Zweck besteht darin, dass Sie jetzt mit einem Tool zu arbeiten begonnen haben, das leistungsfähiger als VBScript ist und das Ihnen ermöglicht, mühelos Anwendungen mit einer ansprechenden Benutzeroberfläche zu erstellen: ein enormer Bonus. Systemadministratoren werden zahlreiche weitere Verwendungszwecke für Visual Basic finden.
Bedenken Sie zudem: Sie müssen nicht das Fahren neu lernen, um die neue gebührenpflichtige Spur verwenden zu können, sondern sich einfach an die Tatsache gewöhnen, dass die Fahrzeuge vor Ihnen sich tatsächlich bewegen. Wenn Sie mit VBScript vertraut sind, gilt analog zu, dass Sie keine vollständig neue Sprache erlernen müssen, um Visual Basic verwenden zu können, sondern Sie müssen sich einfach nur daran gewöhnen, dass Ihnen viele neue Möglichkeiten offen stehen.
Der Scripting Perplexer von Dr. Scripto
Die monatliche Herausforderung, die nicht nur Ihr Talent zum Rätsellösen testet, sondern auch Ihre Skriptingfähigkeiten.

August 2008: Skriptingalphabet
Im Rätsel dieses Monats müssen Sie die Buchstaben A bis Z in die leeren Felder eintragen, um ein Wort zu erhalten, das in irgendeiner Weise mit der Skripterstellung zusammenhängt. Jeder Buchstabe (A bis Z) darf nur einmal verwendet werden, und die Buchstaben erscheinen nicht in alphabetischer Reihenfolge. Der eingefügte Buchstabe könnte am Anfang, am Ende oder irgendwo in der Mitte des Worts stehen. In der ersten Zeile wurde beispielsweise bereits der Buchstabe C eingetragen, um das Wort SCRIPT zu erhalten:

Antwort:
Der Scripting Perplexer von Dr. Scripto
Antwort: Skriptingalphabet, August 2008

Die Scripting Guys arbeiten für Microsoft (oder sind zumindest dort angestellt). Wenn sie nicht gerade ihrem Hobby, dem Baseball (oder verschiedenen anderen Aktivitäten) nachgehen, betreiben sie das TechNet-Skriptcenter. Besuchen Sie es unter www.scriptingguys.com.


Die Desktopdateien Die Windows-Bereitstellungsdienste
Wes Miller

Inhalt
WDS in Windows Server 2003
WDS in Windows Server 2008
Treffen einer Entscheidung
Überlegungen
Erste Schritte mit WDS
Aufzeichnungsabbilder
Grundlagen des Aufzeichnens
Migration von Abbildern
Unbeaufsichtigte Installation
Im vorigen Monat habe ich die Geschichte der auf Pre-boot eXecution Environment (PXE) basierenden Bereitstellungstools von Microsoft behandelt. In diesem Monat werde ich mich mit den Windows-Bereitstellungsdiensten (Windows Deployment Services, WDS) befassen und dabei insbesondere auf die Versionen für Windows Server 2003 und die aktualisierte Version eingehen, die mit Windows Server geliefert wird.
2008. Danach zeige ich Ihnen, wie Sie mit WDS arbeiten können.
WDS lässt sich am besten als eine überarbeitete Version der Remoteinstallationsdienste (Remote Installation Services, RIS) beschreiben. Obwohl einige der Hauptkomponenten dieser beiden Anwendungen identisch sind und die WDS-Version für Windows Server® 2003 sogar einen Legacymodus besitzt, dessen Funktionalität mit der Funktionalität von RIS identisch ist, ist die Infrastruktur von WDS bei der Ausführung im einheitlichem Modus und bei 50 Prozent des gemischten Modus ganz neu.

WDS in Windows Server 2003
Als Windows Vista® veröffentlicht wurde, wurde gleichzeitig WDS angeboten. Dieser Schritt war notwendig, da die Installation von Windows Vista mit der WIM-Architektur (Windows® Imaging Format) von Grund auf neu entworfen wurde, wodurch RIS nicht mehr in der Lage war, Windows Vista (und schließlich auch Windows Server 2008) bereitzustellen. Danach wurde WDS als ein Out-of-Band-Download für Kunden bereitgestellt, die Windows Server 2003 SP1 verwenden. Ab SP2 wurde RIS vollständig durch WDS ersetzt.
Denken Sie daran, dass WDS in Windows Server 2003 eine vollständige Abwärtskompatibilität besitzt und Sie daher nicht zum einheitlichen Modus wechseln müssen, wenn Sie auf Ihren Windows Server 2003 SP2-Systemen WDS installieren. Sie können im Legacymodus (Ausführung als RIS-Server) oder im gemischtem Modus bleiben und entweder WDS oder RIS initiieren.
Zusätzlich zu der Fähigkeit, Windows Vista und Windows Server 2008 bereitzustellen, bietet WDS bei der Ausführung im einheitlichen Modus oder in der einheitlichen Hälfte des gemischten Modus mehrere zusätzliche Features. Statt das Installationsmodul im Windows-Kernelmodus sowie den herkömmlichen Installationskern zu benutzen, den ich im vorigen Monat behandelt habe (technet.microsoft.com/magazine/cc645015), verwendet WDS Windows PE als Bootstrap-Vorinstallationsumgebung und stellt auf WIM basierende Abbilder bereit, statt auf RISetup oder RIPrep basierende Installationen zu verwenden. Dies macht die Bereitstellung schneller, einfacher und zuverlässiger.
Darüber hinaus entfallen viele der Einschränkungen, die ich im vorigen Monat erwähnt habe, wie zum Beispiel die Notwendigkeit, Zeichen zu verwenden, die auf ANSI (American National Standards Institute) beruhen. Dies liegt daran, dass Windows PE in der Lage ist, dieselben Zeichensätze wie eine volle Installation von Windows anzuzeigen.
Zusätzlich hat WDS einige Tools bekommen, die in RIS leider gefehlt haben, wie zum Beispiel ein MMC-Snap-In (Microsoft® Management Console), das bei der Verwaltung hilft, sowie ein riesiges umfassendes Befehlszeilenkonfigurationstool, das Konfigurationsfunktionen ermöglicht, die weit über die Funktionen von RIS hinausgehen.
Da sowohl der Legacymodus als auch der gemischte Modus das Bereitstellen von Windows-Abbildern ermöglichen, die auf RISetup und RIPrep basieren, sollten Sie eines nicht vergessen: Historisch betrachtet hat RIS eine Komponente namens „SIS“ (Single Instance Storage) verwendet, um die Abbildspeicherung auf Datenträgern zu optimieren. SIS, das später in den Lieferumfang von Windows Storage Server 2003 aufgenommen wurde, nutzte einen Dienst namens „Groveler“, der auf RIS- und WDS-Servern im Hintergrund ausgeführt wird und nach identischen Dateien sucht. Wenn Größe und Hash von Dateien übereinstimmen, speichert SIS eine Kopie in seinem eigenen Ordner „SIS Common Store“ und erstellt danach einen Hardlink zu jeder der ursprünglichen Versionen, die SIS gefunden hat.
SIS wurde dafür entworfen, sich nur geringfügig auf die Prozessornutzung auszuwirken und zugleich beträchtliche Speichereinsparungen zu ermöglichen. Dies war ein hervorragendes Konzept, das zuerst von RIS und danach in der gesamten Windows Server-Plattform übernommen wurde. SIS wird aber nicht mehr verwendet, weil die Zukunft jetzt WDS gehört.
Da WDS unter Windows Server 2008 immer und unter Windows Server 2003 im einheitlichem Modus für die Installation WIM-Abbilder verwendet, besitzt es eine eigene Komprimierung und vor allem ein eigenes Einzelinstanz-Dateispeichermodell und verwendet SIS überhaupt nicht. Der Abbildspeicher ersetzt das von RIS verwendete Speichermodell durch ein neues WIM-basiertes Design für WDS. Zusätzliche Informationen zu SIS sind unter go.microsoft.com/fwlink/?LinkId=120302 verfügbar.

WDS in Windows Server 2008
In Windows Server 2008 ist WDS sowohl zu einer Obermenge als auch zu einer Teilmenge der Funktionalität in Windows Server 2003 geworden. WDS kann jetzt durch Transport Server, einen neuen TFTP-Server (Trivial File Transfer-Protokoll) mit höherer Leistung, Unterstützung von EFI-basierten x64-Systemen (Extensible Firmware Interface) sowie eine verbesserte Berichterstellung zu Installationsmetriken Abbilder über Multicast im eigenständigen Modus bereitstellen. Darauf werde ich im Artikel des nächsten Monats eingehen.
Sie sollten beachten, dass es in Windows Server 2003 ein spezielles WDS-Feature gibt, das in Windows Server 2008 abgeschafft wurde: die Unterstützung von Legacyinstallationen. Es ist nicht mehr möglich, zum Starten einer Installation RISetup/RIPrep-Abbilder bereitzustellen oder den Legacy-RIS-Operating System Chooser zu verwenden.

Treffen einer Entscheidung
Eine recht häufige Frage, die mir seit der Veröffentlichung von Windows Server 2008 immer wieder gestellt wird, lautet „Welche Version von WDS sollte ich verwenden?“. Die Antwort auf diese Frage hängt davon ab, ob Sie Windows-Versionen bereitstellen, die Windows Vista vorausgegangen sind, und ob Sie dann, wenn dies der Fall ist, dazu bereit sind, den Übergang von RISetup- und/oder RIPrep-basierten Abbildern zu wagen, um explizit eine auf WIM basierende Installation zu verwenden.
WDS ist selbst unter Windows Server 2008 in der Lage, ältere Windows-Versionen bis hin zu Windows 2000 bereitzustellen, falls dies in einem WIM-Abbild enthalten ist, und kann dies mithilfe von Multicast durchführen. Wenn Sie also jetzt von RIS auf WDS umsteigen und vorhaben, in Ihrer Infrastruktur Windows Server 2008 zu verwenden, und auch dazu bereit sind, von RIS-basierten zu WDS-basierten Abbildern zu wechseln, ist eine Migration zu WDS in Windows Server 2008 für Sie möglicherweise sehr sinnvoll.
Sie könnten auch auf Ihrem Windows Server 2003-System selbst von RIS zu WDS wechseln, was im Grunde auch geschieht, sobald Sie SP2 installieren, und dadurch auf WDS-basierte Abbilder umsteigen. Dann könnten Sie einfach auf Windows Server 2008-WDS aktualisieren und sofort loslegen.
Dies ist jedoch nicht das Modell, das ich Ihnen empfehlen würde. Wie bei vielen Windows Server-Versionen vor 2008 wird von Microsoft empfohlen, von einer Windows Server-Version zu einer anderen Windows Server-Version zu migrieren, statt eine Aktualisierung durchzuführen.
Hinzu kommt, wie ich bereits zuvor erwähnt habe, dass es wesentlich sinnvoller ist, für Ihre Infrastruktur x64-Versionen von Windows Server 2008 in Betracht zu ziehen, als dies bei x64-Versionen von Windows Server 2003 der Fall wäre. Wenn Sie diesen Übergang wagen, ist die Durchführung einer Server-zu-Server-Migration von WDS unter Windows Server 2003 zu Windows Server 2008 relativ einfach und viel zuverlässiger als eine Aktualisierung.

Überlegungen
Hier folgen einige Punkte, die Sie berücksichtigen sollten, wenn Sie an Ihrer WDS-Bereitstellung arbeiten. Beachten Sie, dass dies keine neuen Anforderungen für WDS sind, denn bei RIS mussten dieselben Überlegungen angestellt werden. Sie sollten sie aber unabhängig davon in Betracht ziehen, ob Sie einen einzigen WDS-Server oder eine ganze Infrastruktur erstellen:
Berechtigungen Sie müssen zwei wichtige Punkte beachten, wenn Sie einen WDS-Server verwalten. Sie müssen einen WDS-Server genauso in Active Directory® autorisieren, wie dies bei RIS notwendig war. Um dies zu tun, müssen Sie entweder ein Domänenadministrator in der Stammdomäne der Gesamtstruktur oder ein Unternehmensadministrator sein oder die entsprechenden Berechtigungen besitzen. Sie müssen auch ein Domänenadministrator sein, um Ihren WDS-Server verwalten zu können, und müssen natürlich auch ein Administrator für den WDS-Server selbst sein.
Virtualisierung Beim Ausführen in einer unter Microsoft Virtual PC oder Virtual Server virtualisierten Instanz von Windows Server 2003 oder Windows Server 2008 kann bei der Kommunikation mit einem Client-PC in derselben Installation von Virtual PC oder Virtual Server eine Racebedingung auftreten, die beim PXE-Start beginnt und dazu führt, dass der Client extrem langsam arbeitet oder eventuell sogar blockiert. Es wird empfohlen, entweder Clients oder Server zu virtualisieren, aber nicht beides, vor allem nicht auf dem gleichen Hostsystem. Ich persönlich würde davon abraten, einen WDS-Server für die Produktion zu virtualisieren, und zwar in erster Linie aufgrund des nächsten Punkts, der berücksichtigt werden sollte.
Andere Dienste Genau wie RIS arbeitet WDS nicht immer reibungslos mit anderen Produktionsdiensten zusammen. Bei RIS und WDS treten vor allem dann Probleme auf, wenn sie auf einem Produktionssystem ausgeführt werden, auf dem auch Microsoft Exchange Server, Systems Management Server (SMS) und System Center Configuration Manager (SCCM) ausgeführt werden.
Generell empfehle ich, dass WDS die einzige Rolle auf Ihrem Server sein sollte, wenn Sie ihn für mehr als nur eine Handvoll Clients für die Produktion verwenden. Dies gilt nicht nur für WDS – Sie sollten grundsätzlich immer gut überlegen, bevor Sie Rollen von Windows Server-Produkten mischen, und sie vor der Bereitstellung gründlich testen.
Langsame Verbindungen oder Verbindungen mit hoher Latenz Genau wie RIS ist WDS nicht dafür vorgesehen, über eine Verbindung mit niedriger Bandbreite oder mit einer hohen Latenz wie z. B. eine Satellitenverbindung verwendet zu werden. Dies könnte Probleme mit dem PXE-Handshake verursachen und das Herunterladen von Abbildern zu einer wahren Tortur machen, falls es überhaupt möglich ist.

Erste Schritte mit WDS
Mehr zu WDS

  • Schritt-für-Schritt-Anleitung für WDS unter Windows Server 2003
  • Schritt-für-Schritt-Anleitung für die Windows-Bereitstellungsdienste (Windows Server 2008)
  • Bereitstellen und Verwalten des WDS-Updates unter Windows Server 2003
  • Dokumentation für die Windows-Bereitstellungsdienste unter Windows Server 2008
  • Technische Referenz: Windows-Bereitstellungsdienste (Windows Server 2008)
Zuerst müssen Sie entscheiden, ob Sie WDS unter Windows Server 2003 oder Windows Server 2008 verwenden werden. Wenn Sie Windows Server 2003 verwenden, empfehle ich Ihnen, mit SP2 zu beginnen, da WDS (als Ersatzprodukt zu RIS) als optionale Komponente in SP2 enthalten ist, statt SP1 und den vorher verfügbaren optionalen Download von WDS, der im Windows Automated Installation Kit (WAIK) enthalten war, zu verwenden.
Bei jeder Version von Windows Server sollten Sie Ihr Serversystem ausbauen. Sie sollten eine qualitativ hochwertige Netzwerkschnittstellenkarte (Network Interface Card, NIC) verwenden, die mindestens 100 MBit/s verarbeiten kann. Verwenden Sie kein NIC-Teaming, da die PXE-Infrastruktur von WDS damit Probleme haben könnte. Beachten Sie, dass Sie bei Verwendung von Windows Server 2008 WDS entweder auf Server Core oder in der vollen Installation von Windows Server 2008 installieren können.
WDS wird – genau wie vorher RIS – in Windows Server 2003 als optionale Komponente installiert. Sie können WDS während der Installation des Betriebssystems installieren oder es später durch Ausführen von „Software“ | „Windows-Komponenten hinzufügen/entfernen“ (oder das Ausführen von „sysocmgr.exe“ in der Befehlszeile) installieren. WDS wird in Windows Server 2008 als Rolle installiert und kann über den Erstkonfigurationsassistenten (klicken Sie auf „Rollen hinzufügen“ | „Weiter“ | „Windows-Bereitstellungsdienste“), über den Server-Manager (mit denselben Schritten wie im Erstkonfigurationsassistenten) oder durch Ausführen von „ServerManagerCmd –install WDS“ in der Befehlszeile installiert werden.
Nachdem Sie WDS installiert haben, müssen Sie es konfigurieren. Wechseln Sie im Startmenü von Windows zu „Verwaltung“, und wählen Sie „Windows-Bereitstellungsdienste“ aus. Wenn MMC gestartet wird, klicken Sie mit der rechten Maustaste auf Ihren Server, und wählen Sie im Menü den Befehl „Server konfigurieren“ aus, um den Konfigurationsassistenten zu starten.
Wenn Sie unter Windows Server 2003 installieren und einen vorhandenen RIS-Server aktualisieren, sollten Sie das vorhandene RemoteInstall-Verzeichnis angeben, damit die Legacyinstallation auf den gemischten Modus aktualisiert werden kann. In dieser Situation sollten Sie sicherstellen, dass sich das RemoteInstall-Verzeichnis nicht in der Systempartition befindet, da dies die Leistung beeinträchtigen könnte.
Abbildung 1 zeigt die WDS-Konsole unter Windows Server 2008, bevor der Konfigurationsassistent abgeschlossen wurde. Abbildung 2 zeigt den Begrüßungsbildschirm des WDS-Konfigurationsassistenten unter Windows Server 2008. Abbildung 3 zeigt den PXE-Konfigurationsschritt des WDS-Konfigurationsassistenten. In diesem Schritt können Sie angeben, ob der Server beliebigen Clients antworten soll (dies ist für die anfängliche Erweiterung recht nützlich), ob er nur bekannten Clientcomputern antworten soll (Computern, die bereits in einer früheren Phase in Active Directory angemeldet wurden) oder ob er allen Clients antworten soll (und optional alle unbekannten Clients halten soll, damit ein Administrator die weitere Vorgehensweise wählen kann).
Abbildung 1 WDS wurde installiert, aber noch nicht konfiguriert
Abbildung 2 Der WDS-Konfigurationsassistent
Abbildung 3 Wählen einer Antwortrichtlinie für den PXE-Server
Abbildung 4 zeigt einen vollständig konfigurierten WDS-Server unter Windows Server 2008 (bisher ohne installierte Abbilder) mit geöffneter Seite „Eigenschaften“. Wenn Sie einen Server verwenden, der bereits ein DHCP-Server (Dynamic Host Configuration Protocol) ist, achten Sie darauf, „DHCP Option 60“ auf „PXEClient“ zu setzen und „WDS“ so einzustellen, dass Port 67 nicht abgehört wird. Dadurch ermöglichen Sie Ihrem WDS-Server, während des PXE-Ermittlungsprozesses einen Schritt auszulassen (worauf ich im Artikel des vorigen Monats eingegangen bin).
Abbildung 4 Ein vollständig konfigurierter WDS-Server unter Windows Server 2008
Sobald der Assistent abgeschlossen wurde, können Sie neue Abbilder hinzufügen. Einem WDS-Server, der im gemischten oder im einheitlichen Modus ausgeführt wird, können zwei Arten von Abbildern hinzugefügt werden:
  • Startabbilder: Dies sind Abbilder, die Windows PE 2.x enthalten und normalerweise von der Installations-DVD von Windows Server 2008 oder Windows Vista SP1 kopiert werden. Beachten Sie, dass Sie für Ihre Startabbilder die Datei „\Sources\Boot.wim“ von Windows Server 2008 verwenden sollten (auch wenn Sie Windows Vista oder ein Legacybetriebssystem bereitstellen), falls Sie Multicast verwenden. Startabbilder bestehen normalerweise aus Windows PE, Windows Setup.exe und anderen Abhängigkeiten.
  • Installationsabbilder: Diese Abbilder bestehen aus Windows-Betriebssystemabbildern, wobei es sich normalerweise um die Datei „\Sources\Install.wim“ von Windows Vista oder Windows Server 2008 handelt.
Die Schritte zum Hinzufügen eines Standardstartabbilds oder eines Standardinstallationsabbilds sind fast identisch. Sie starten beide Prozesse, indem Sie mit der rechten Maustaste auf den Abbildtyp klicken und wählen, ein Abbild dieses Typs hinzuzufügen.
Bei einem Installationsabbild müssen Sie einen Namen für die Abbildgruppe angeben (vorausgesetzt, dass ein Standard-WIM auf der Windows-DVD mehr als einen einzigen Betriebssystemtyp enthält). Wechseln Sie danach zur entsprechenden Datei „boot.wim“ oder „install.wim“, die Sie hinzufügen möchten, und klicken Sie auf „Öffnen“. Bei Installationsabbildern können Sie anschließend alle Volumeabbilder (Betriebssystemabbilder), die Sie nicht dem WDS-Server hinzufügen möchten, aus der Auswahl entfernen. Zum Schluss können Sie mit diesen Standardabbildern auf Clients eine PXE-Installation durchführen.

Aufzeichnungsabbilder
Um benutzerdefinierte Betriebssystemabbilder zu erstellen, müssen Sie ein Aufzeichnungsabbild erstellen. Ein Aufzeichnungsabbild ist ein Windows PE-Abbild, das dazu dient, Ihnen zu ermöglichen, ein Windows-System als WIM-Abbild zu erfassen. Das einfachste Verfahren, dies zu tun, besteht darin, ein zuvor installiertes Abbild namens „boot.wim“ zu verwenden.
Klicken Sie mit der rechten Maustaste auf das gewünschte Abbild und danach auf „Aufzeichnungsstartabbild erstellen“. Geben Sie den Namen und die Beschreibung für Ihr Abbild sowie den Speicherort ein, um für den Fall, dass beim Bereitstellen des Aufzeichnungsabbilds Netzwerkverbindungsprobleme auftreten sollten, eine lokale Kopie der WIM-Datei zu speichern. Führen Sie danach den Assistenten bis zum Ende durch, und klicken Sie auf „Fertig stellen“.
Klicken Sie anschließend mit der rechten Maustaste auf den Ordner „Boot Image“ in der WDS MMC, und klicken Sie auf „Startabbild hinzufügen“. Befolgen Sie wie zuvor die Anweisungen des Assistenten. Sobald Sie damit fertig sind, sind Sie bereit, ein Windows-Installationsabbild aufzuzeichnen.

Grundlagen des Aufzeichnens
Bevor Sie ein Betriebssystemabbild aufzeichnen, müssen Sie natürlich Windows installieren und sicherstellen, dass es alle gewünschten Anwendungen, Anpassungen und Aktualisierungen enthält. Danach müssen Sie auf Ihrem System „Sysprep“ ausführen, denn Sie können Windows-Installationsabbilder nur von Systemen aufzeichnen, die mit „Sysprep“ vorbereitet wurden. Sie müssen einen gültigen lokalen Speicherort angeben, um das neue Abbild zur Vermeidung einer potenziellen Beschädigung zu speichern, und die Dateierweiterung „.wim“ festlegen.
Sobald Sie Ihr System konfiguriert und die richtige Version der Datei „sysprep.exe“ in das System kopiert haben, müssen Sie die folgenden Schritte ausführen:
  1. Wechseln Sie an der Eingabeaufforderung auf dem Referenzcomputer in das Verzeichnis, in dem sich die Datei „sysprep.exe“ befindet.
  2. Starten Sie „Sysprep“ (Sie können es auch starten, indem Sie auf die Datei „sysprep.exe“ doppelklicken und manuell Optionen festlegen). Führen Sie auf Computern, auf denen Windows Vista oder Windows Server 2008 ausgeführt wird, den Befehl „sysprep /oobe /generalize /reboot“ aus. Führen Sie auf Computern, auf denen frühere Versionen von Windows ausgeführt werden, den Befehl „sysprep -mini –reseal –reboot“ aus.
  3. Wenn der Computer neu gestartet wird, starten Sie ihn mit PXE (dieser Prozess kann in Abhängigkeit von Ihrem Clientsystem variieren).
  4. Wählen Sie im Bootmenü Ihr WDS-Aufzeichnungsabbild aus, und klicken Sie auf „Weiter“.
  5. Wählen Sie das Laufwerk sowie den Namen und die Beschreibung für das Abbild aus.
  6. Wie bereits erwähnt, werden nur Systeme angezeigt, die mit „Sysprep“ vorbereitet wurden. Dies wurde mit Absicht so eingerichtet und lässt sich nicht umgehen.
  7. Klicken Sie auf „Durchsuchen“, und wechseln Sie zum lokalen Ordner, in dem das aufgezeichnete Installationsabbild gespeichert werden soll. Als Speicherort können Sie auch ein zugeordnetes Netzwerklaufwerk auswählen.
  8. Wählen Sie „Abbild auf WDS-Server hochladen“ aus.
  9. Geben Sie den Namen des WDS-Servers ein, und klicken Sie danach auf „Verbinden“.
10. Wählen Sie in der Liste „Abbildgruppe“ die Abbildgruppe aus, in der Sie das Abbild speichern möchten, und klicken Sie danach auf „Fertig stellen“.
Dieses Abbild ist jetzt bereit, von Ihrem WDS-Server bereitgestellt zu werden. RIS-Veteranen unter Ihnen wird wahrscheinlich aufgefallen sein, dass ich dieses Windows-Abbild nicht online aufgezeichnet habe. WDS erfordert, dass das System, das aufgezeichnet wird, offline ist.
RIPrep in RIS konnte ein Onlinesystem aufzeichnen (genauer gesagt, setzte es dies sogar voraus). Dieser Prozess war extrem empfindlich. Ich glaube, dass Sie den Aufzeichnungsprozess für WDS relativ einfach und auf jeden Fall wesentlich stabiler finden werden.

Migration von Abbildern
Wenn Sie RIS über einen längeren Zeitraum hinweg verwendet haben, haben Sie sicher einige Abbilder herumliegen. Für die Abbilder, die auf RISetup basieren (Skriptinstallation), ist hier der Weg zu Ende. RIPrep-Abbilder dagegen können Sie zu auf WDS-WIM basierenden Abbildern migrieren. Tatsächlich ermöglicht WDS sogar die Migration der Abbilder über WDSUtil (dies werde ich im nächsten Monat genauer erklären).
Generell empfehle ich, dies nur zu tun, wenn Sie sehr viel Zeit in ein Abbild investiert haben und es nicht verlieren wollen. Der Prozess funktioniert recht gut, aber ich habe schon von einigen Fehlern bei der Konvertierung gehört, die es normalerweise erforderlich machen, das Abbild von Grund auf neu zu erstellen.

Unbeaufsichtigte Installation
Ein Abbild so zu erstellen, wie ich dies zuvor getan habe, liefert ein Abbild, das manuell installiert werden kann. Um eine automatischere oder eine vollautomatische Installation durchführen zu können, müssen Sie zwei unbeaufsichtigte Installationsdateien verwenden. WDS selbst erfordert eine Antwortdatei („unattend.xml“, gespeichert im Verzeichnis „\RemoteInstall\WDSClientUnattend“ auf Ihrem WDS-Server), die den WDS-Installationsprozess automatisiert. Die zweite Datei ist eine unattend-Abbilddatei. Bei Windows Vista oder höher heißt diese Datei „unattend.xml“. Bei älteren Windows-Abbildern heißt diese Datei „sysprep.inf“ und ist in einer $OEM$-Verzeichnisstruktur oder im Verzeichnis jedes Abbilds unter „\Unattend“ gespeichert. Diese Datei wird dazu verwendet, die eigentliche Installation von Windows zu automatisieren, sobald WDS abgeschlossen ist.
Um die unattend-Datei von WDS zu erstellen, erstellen Sie mit dem WAIK eine Datei namens „unattend.xml“ für WDS. Kopieren Sie diese Datei in das Verzeichnis „RemoteInstall“ oder in ein Unterverzeichnis. Klicken Sie mit der rechten Maustaste auf das Installationsabbild, für das Sie die unattend-Datei verwenden möchten, und klicken Sie danach auf „Eigenschaften“. Wählen Sie auf der Registerkarte „Client“ die Option „Unbeaufsichtigte Installation aktivieren“ aus, und geben Sie die vorher festgelegte Datei „unattend.xml“ an.
Um die unattend-Abbilddatei für Abbilder vor Windows Vista zu erstellen, kopieren Sie die Datei „sysprep.inf“ in das Verzeichnis „$OEM$“ für das Abbild (z. B. „D:\RemoteInstall\Images\Windows XP\SP2\$OEM$\$1\sysprep\sysprep.inf“). Geben Sie bei Windows Vista-Abbildern das Abbild an, das Sie zuordnen möchten, klicken Sie auf „Eigenschaften“, und klicken Sie danach auf der Registerkarte „Allgemein“ auf die Option „Die Installation des Abbilds im unbeaufsichtigten Modus zulassen“. Geben Sie danach die Datei „unattend.xml“ an, die für die Installation verwendet werden soll.
Jetzt haben wir die Hälfte des Wegs bereits hinter uns. Dieser Artikel sollte Ihnen zeigen, wie Sie mit WDS arbeiten können. Im nächsten Monat werde ich ausführlicher auf WDSUtil, auf Spezifikationen von Abbildspeichern sowie auf Multicast eingehen. Danach werde ich diese Artikelreihe mit einem detaillierten Überblick darüber abschließen, wie und warum Sie die Möglichkeit in Betracht ziehen sollten, auf der Grundlage von WDS eine benutzerdefinierte Bereitstellungslösung zu erstellen. Sehen Sie sich bis dahin die Randleiste „Mehr zu WDS“ an, die diesen Artikel begleitet.

Wes Miller ist Senior Technical Product Manager bei CoreTrace (www.CoreTrace.com) in Austin, Texas. Zuvor war er bei Winternals Software und als Programmmanager bei Microsoft tätig. Sie können Wes Miller unter technet@getwired.com erreichen.


Sicherheit auf dem Prüfstand Kennwörter und Kreditkarten, Teil 2
Jesper M. Johansson

Inhalt
Unechter mehrstufiger Anmeldeprozess
Das Problem mit Browser-Add-Ins
Der Authentifikator darf sich nie ändern
Herabstufen auf weniger sichere Kennwörter
Umgehen der unechten mehrstufigen Anmeldung
Probleme mit kompromittierten Kennwörtern
Einige Vorteile
Irreführung von Benutzern durch Eye Candy
Öffnen oder nicht öffnen
Bereitstellen sicherer Kommunikation
Es geht um den Datenschutz
Willkommen beim zweiten Teil meiner dreiteiligen Reihe zu dem Thema, wie die IT-Branche Verbraucher verwirrt, statt ihnen bei Sicherheitsproblemen zu helfen. In der Ausgabe des TechNet Magazins vom Juli 2008 habe ich undurchführbare und falsche Sicherheitsempfehlungen sowie verwirrende Anmeldeworkflows erörtert. (Wenn Sie Teil 1 nicht gelesen haben, finden Sie den Artikel
unter technet.microsoft.com/magazine/cc626076.) Ich habe dargelegt, auf welche Weise sehr häufig anzutreffende, aber schlechte Sicherheitsempfehlungen sowie schlechte Anmeldeworkflows die Verbraucher verwirren und ihre Bemühungen zum Schutz ihrer Personendaten untergraben.
In dieser Ausgabe wird diese Diskussion mit weiteren Beispielen aus der Praxis fortgesetzt, die aus der Welt der Verbrauchersicherheit stammen. Der letzte Teil dieser Reihe, der einen „Ruf zu den Waffen“ für Sicherheitsfachleute weltweit enthalten wird, erscheint in der nächsten Ausgabe des TechNet Magazins.

Unechter mehrstufiger Anmeldeprozess
Im Oktober 2005 veröffentlichte das Federal Financial Institutions Examination Council (FFIEC) seine Richtlinien zur Authentifizierung in einer Internet-Banking-Umgebung (siehe www.ffiec.gov/press/pr101205.htm). Der Zeitrahmen für die Implementierung betrug nur 14 Monate, und bald hatten US-amerikanische Finanzinstitute Probleme damit herauszufinden, wie diese neuen Richtlinien erfüllt werden könnten.
Den meisten Instituten gelang es nicht, diesen Zeitrahmen einzuhalten. Viele Institute, denen es schließlich gelang, die Richtlinien einzuhalten, führten Maßnahmen ein, die lediglich dem Zweck dienen, diese Richtlinien zu erfüllen. Das heißt, die Institute ergriffen Maßnahmen, die die Sicherheit der Kunden in keiner Weise erhöhen (es sind lediglich Maßnahmen des „Sicherheitstheaters“). Einige der interessantesten Beispiele wenig hilfreicher Lösungen sind jene, mit denen versucht wird, eine mehrstufige Authentifizierung zu erstellen, die eigentlich gar nicht mehrstufig ist.
Denken Sie beispielsweise an die Technologie, die den Tipprhythmus misst, wenn ein Benutzer sein Kennwort eingibt. Bei Verwendung auf einer Website zeigt diese Lösung einen Anmeldedialog an, der genau wie der alte Anmeldedialog aussieht. Dieser Dialog ist jetzt jedoch ein Adobe Flash-Objekt.
Das Flash-Objekt zeichnet den Tipprhythmus des Benutzers auf, beispielsweise, wie lange die Tasten gedrückt werden und wie viel Zeit zwischen dem Drücken der einzelnen Tasten verstreicht. Diese Daten werden zusammen mit dem Kennwort an die Website gesendet, wo sie mit gespeicherten Werten verglichen werden. So lange der Tipprhythmus innerhalb bestimmter Abweichungen der gespeicherten Daten liegt und das Kennwort übereinstimmt, wird die Anmeldung akzeptiert. Dabei wird von der allgemeinen Vorstellung ausgegangen, dass die Website eine pseudobiometrische Authentifizierungsmethode verwenden kann, ohne Drittanbieterhardware auf dem Client installieren zu müssen.
Ich bezeichne dies als unechte mehrstufige Authentifizierung. Es ist keine echte mehrstufige Authentifizierung, die zwei oder mehrere der folgen kanonischen Faktoren misst:
  • Etwas, das der Benutzer besitzt (z. B. eine Smartcard)
  • Etwas, das der Benutzer weiß (z. B. ein Kennwort)
  • Etwas, das der Benutzer ist (z. B. ein Fingerabdruck)
Statt tatsächlich mehrere Faktoren in den Authentifizierungsprozess aufzunehmen, liest die unechte mehrstufige Authentifizierung mehrere Parameter von nur einem einzigen Faktor – dem Kennwort – ab. Diese zusätzlichen Parameter werden dann verwendet, um Rückschlüsse auf etwas zu ziehen, das der Benutzer ist.
Die für die unechte mehrstufige Authentifizierung verwendete Technologie hat viele Fehler. Zusammen machen diese Fehler die Technologie größtenteils unwirksam, was das Lösen von Sicherheitsproblemen betrifft.

Das Problem mit Browser-Add-Ins
Unechte mehrstufige Authentifizierungssysteme nutzen Browser-Add-Ins, um die hochentwickelte clientseitige Verarbeitung bereitzustellen, die sie benötigen. Selbstverständlich haben alle Softwareanwendungen Fehler, und einige dieser Fehler verursachen Sicherheitsrisiken. Diese Sicherheitsrisiken werden zu einem echten Problem, wenn es schwierig ist, die Software zu aktualisieren, und der Benutzer sich nicht sicher ist, ob ein Update installiert wurde.
Browser-Add-Ins zeichnen sich leider durch beide Merkmale aus. Sie sind schwierig zu aktualisieren und bieten dem Benutzer keine ausreichenden Informationen dazu, ob die installierte Version auf dem neuesten Stand ist. Deshalb muss der Benutzer Software über das Internet verfügbar machen, die andernfalls möglicherweise nicht benötigt würde.
In einigen Fällen muss auf der Add-In-Website regelmäßig nach Updates gesucht werden, damit das Add-In immer auf dem neusten Stand ist. Es ist höchst unwahrscheinlich, dass die meisten Benutzer dies tun werden. Jedes System, das von einem Endbenutzer fordert, dass zusätzliche, in keinem Zusammenhang stehende Software über das Internet verfügbar gemacht wird, um Sicherheitsfunktionalität zu bieten, sollte mit Vorsicht betrachtet werden.

Der Authentifikator darf sich nie ändern
Der Faktor, der sich auf etwas bezieht, das der Benutzer ist, hat eine Eigenschaft (vielleicht sogar einen Mangel), der die beiden anderen Faktoren nicht betrifft. Während Sie Kennwörter ändern können (etwas, das Sie wissen) und neue Sicherheitstoken erstellen können (etwas, das Sie haben), ist die Anzahl biometrischer Authentifikatoren, die verwendet werden können, ziemlich begrenzt. Sie haben beispielsweise zehn Fingerabdrücke, die Sie in der Regel ein Leben lang behalten. Sollten Sie einen Finger durch einen Unfall verlieren, kann er normalerweise nicht ersetzt werden.
Überlegen Sie nun, wie sich dies auf das Beispiel der unechten mehrstufigen Anmeldung auswirkt. Die als Teil eines anderen Faktors erfassten Metriken lassen sich nicht leicht ersetzen oder ändern. Bei einer Kennwortänderung ändert sich die Art und Weise, wie der Benutzer es eingibt, aber die Art und Weise, wie er die Tasten betätigt, wird sich nicht ändern. Genau darauf verlässt sich das Verfahren. Sollten diese Metriken kompromittiert werden, wäre es möglich, sie künstlich herzustellen. Zumindest könnte ein Angreifer diese Metriken aufzeichnen und wieder abspielen.

Herabstufen auf weniger sichere Kennwörter
Es empfiehlt sich, lange Kennwörter zu verwenden und sie häufig zu ändern. Wie ich bereits in Teil 1 dieser Reihe erörtert habe, ist es (entgegen einiger Ratschläge) eine bewährte Methode, Kennwörter – sicher – aufzuzeichnen. Diese Methoden eignen sich jedoch nicht für das manuelle Eingeben des Kennworts. Es ist schwieriger, ein langes Kennwort einzugeben, und ein aufgezeichnetes Kennwort ist weitaus nützlicher, wenn es kopiert und eingefügt werden kann. Die beste Möglichkeit, den Überblick über hundert oder mehr Kennwörter zu behalten, ist ein Softwaredienstprogramm wie Password Safe (siehe sourceforge.net/projects/passwordsafe). Mit einem solchen Tool können völlig zufällige Kennwörter generiert, in verschlüsselter Form gespeichert und direkt in Anmeldefenster eingefügt werden. Bei dieser Art von Tool müssen Sie nicht einmal wissen, wie Ihr Kennwort lautet.
Genau hier liegt aber das Problem: Tipprhythmen können nur dann gemessen werden, wenn der Benutzer das Kennwort eingibt. Wenn das Kennwort in ein Objekt eingeben werden muss, das den Tipprhythmus misst, versagt dieses Verfahren für die Kennwortverwaltung. Ein aus 15 Zeichen bestehendes, völlig zufälliges Kennwort einzugeben, ist keine einfache Aufgabe. Aus diesem Grund entscheiden sich Benutzer im Allgemeinen zum Vereinfachen ihrer Kennwörter, wenn sie mit dieser Art von System konfrontiert werden. Ein aus 15 Zeichen bestehendes, völlig zufälliges Kennwort ist jedoch weitaus sicherer als ein kürzeres Kennwort in Verbindung mit einem unechten mehrstufigen Authentifizierungssystem.
Im Endeffekt zwingt die unechte mehrstufige Authentifizierung, wenn sie ausschließlich implementiert wird, Benutzer dazu, weniger sichere Kennwörter zu verwenden. Sie werden gleich sehen, dass die Unterstützung von Benutzern, die geeignete Verfahren zur Kennwortverwaltung verwenden, praktisch den gesamten Wert aufheben, der von den unechten mehrstufigen Authentifizierungssystemen angeboten wird.

Umgehen der unechten mehrstufigen Anmeldung
Selbst wenn bei einer Website die unechte mehrstufige Authentifizierung implementiert ist, muss immer noch eine Möglichkeit unterstützt werden, das unechte mehrstufige System zu umgehen. Erstens können nur wenige Websites von allen ihren Benutzern verlangen, eine „Viertanbieter“-Technologie zu installieren, um auf die Website zugreifen zu können. Ein Teil der Benutzer (beispielsweise bestimmte Autoren des TechNet Magazins) werden sich immer weigern, diese Art von Software zu installieren.
Zweitens kann sich der Tipprhythmus aus vielen Gründen ändern, und Websites müssen dies berücksichtigen. So könnte sich ein Benutzer beispielsweise das Handgelenk verstauchen, wodurch sich der Tipprhythmus vorübergehend ändert. Wie kann der Betreffende dann auf die Website zugreifen, wenn sein Tipprhythmus analysiert wird und die Website denkt, dass eine andere Person versucht, sich mit den Anmeldeinformationen des Benutzers anzumelden? Wenn die Verletzung permanent wäre, könnte der Benutzer den gespeicherten Rhythmuswert zurücksetzen. Im Fall einer vorübergehenden Verletzung wird der Benutzer den gespeicherten Wert aber wahrscheinlich nicht zurücksetzen wollen, da er annimmt, dass sein Tipprhythmus bald wieder dem ursprünglichen Wert entsprechen wird.
Und schließlich sind nicht alle Benutzer in der Lage, unechte mehrstufige Authentifizierungssysteme zu verwenden. Eine behinderte Person beispielsweise, die mit dem Computer über eine Spracherkennungsschnittstelle interagiert, könnte abhängig davon, ob die programmgesteuerte Eingabe verhindert wird oder nicht, nicht in der Lage sein, das Anmeldefenster auszufüllen. In diesem Fall wird ein Alternativsystem, das behinderten Personen entgegen kommt, wahrscheinlich vom Gesetz her gefordert.
Die einfachste und direkteste Möglichkeit zur Unterstützung aller dieser Szenarios besteht darin, auch die standardmäßige kennwortbasierte Authentifizierung zu unterstützen.

Probleme mit kompromittierten Kennwörtern
Unechte mehrstufige Authentifizierungssysteme sollen verschiedene Probleme im Zusammenhang mit kennwortbasierter Authentifizierung beheben. Diese Systeme behandeln jedoch nicht alle wesentlichen Möglichkeiten, wie Kennwörter kompromittiert werden können. Es gibt fünf primäre Möglichkeiten, wie Systeme kompromittiert werden können, die sich auf die kennwortbasierte Authentifizierung verlassen. „Kompromittiert“ bedeutet in diesem Fall, dass sich ein Angreifer das Kennwort eines Benutzers verschafft und verwendet hat.
  • Erraten von Kennwörtern
  • Tastatureingabeprotokollierung
  • Phishingangriffe
  • Befragen des Benutzers
  • Einbrechen in ein System, auf dem das Kennwort oder ein Hash des Kennworts gespeichert ist
Das Erraten von Kennwörtern ist für Kriminelle keine besonders häufige Angriffsmethode mehr. Sie wird in den Schatten gestellt von Tastatureingabeprotokollierung und Phishing. Das Erraten von Kennwörtern wird durch die unechte mehrstufige Authentifizierung ebenfalls nur teilweise verringert. Ein konventioneller Ansatz beim Erraten eines Kennworts wird einem unechten mehrstufigen Authentifizierungssystem wahrscheinlich nicht entgegenwirken, da der Angreifer sowohl das Kennwort als auch den Tipprhythmus erraten muss. Obwohl es theoretisch möglich wäre, die Tippmetriken künstlich herzustellen, ist dies selten notwendig, da die eigentlichen Daten normalerweise durch einen Phishingangriff oder die Tastatureingabeprotokollierung aufgezeichnet werden können. Wenn das System zudem über eine standardmäßige Anmeldeoberfläche verfügt, die nur per Kennwort zugänglich ist, kann der Angreifer einfach dieses System zum Erraten des Kennworts verwenden.
Außerdem wird Angriffen, bei denen das Kennwort erraten wird, am besten durch sichere Kennwörter entgegengewirkt. Wenn Benutzer lernen, sicherere Kennwörter möglicherweise mithilfe von Tools zu verwenden, ist die unechte mehrstufige Authentifizierung nicht erforderlich. (Im Gegensatz dazu machen einfachere Kennwörter, die in der Regel bei unechten mehrstufigen Authentifizierungssystemen verwendet werden, das Erraten von Kennwörtern zu einem brauchbareren Ansatz.) Daher ist ein Nutzen, der hier zur Begrenzung des Erratens von Kennwörtern angeboten wird, nur dann wirklich von Nutzen, wenn die Implementierung die allein auf dem Kennwort basierende Anmeldung nicht unterstützt. Wie ich bereits dargelegt habe, ist dies selten möglich, wenn überhaupt. Das heißt, wenn Benutzer schwächere Kennwörter im Zusammenhang mit unechten mehrstufigen Authentifizierungssystemen verwenden, kann das Erraten von Kennwörtern wieder zu einer nützlichen Angriffsmethode werden. Die unechte mehrstufige Authentifizierung würde die Sicherheit also verringern, statt sie zu erhöhen. Diese Frage sollte weiter untersucht werden.
Die unechte mehrstufige Authentifizierung versagt auch beim Problem der Tastatureingabeprotokollierung. Obwohl ich keine heute verwendete Tastatureingabeprotokollierung kenne, die den Tipprhythmus erfasst, gibt es absolut keinen Grund, warum sie nicht entwickelt werden könnte. Eine Tastatureingabeprotokollierung ist eine Hardwarekomponente, die zwischen Tastatur und Computer geschaltet ist, oder Software, die Tastaturanschläge aufzeichnet. In beiden Fällen hat die Protokollierung vollständigen Zugriff auf alle Daten, die von der unechten mehrstufigen Authentifizierungslösung verwendet werden.
Tatsächlich kann die Tastatureingabeprotokollierung sogar auf noch mehr Daten zugreifen, da eine Authentifizierungslösung im Benutzermodus ausgeführt wird, während eine Tastatureingabeprotokollierung auf einer viel tieferen Ebene angesiedelt ist. Ohne vertrauenswürdigen Pfad zwischen der Tastatur und dem webbasierten Objekt, mit dem das Kennwort erfasst wird, ist es unmöglich, diese Art von Beeinträchtigung zu verhindern. Wenn unechte mehrstufige Authentifizierungslösungen allgemein verwendet werden, kann mit Sicherheit davon ausgegangen werden, dass jemand eine solche Tastatureingabeprotokollierung erstellen wird.
Ähnlich lassen sich Phishingangriffe nicht mithilfe der unechten mehrstufigen Authentifizierung abwehren. Statt nur einen gefälschten Anmeldebildschirm zu verwenden, kann der Angreifer ein Flash-Objekt zum Erfassen des Kennworts und des Tipprhythmus verwenden.
Zugegeben, die unechte mehrstufige Authentifizierung kann in einigen Szenarios helfen, in denen das Verfahren des Angreifers nur das Kennwort des Benutzers bereitstellt. Die einfachste Möglichkeit, ein Kennwort von einem Benutzer zu erhalten, besteht darin, ihn danach zu fragen. Schockierenderweise hat sich dies als wirksames Verfahren erwiesen, egal, ob eine Person direkt, per Telefon oder durch Phishingnachrichten danach gefragt wird.
Den Benutzer nach seinem Tipprhythmus zu fragen, wird natürlich weit weniger effektiv sein. Auch wenn eine Unternehmenskennwortdatenbank kompromittiert wird, dürfte der Angreifer wahrscheinlich nur Zugang zu den Kennwörtern erhalten. Aber auch hier gilt wieder, dass diese Angriffe nur verringert werden, wenn das System keine standardmäßige Authentifizierung bereitstellt, die nur per Kennwort erfolgt.
Es sollte auch darauf hingewiesen werden, dass der Angreifer bei einer Kompromittierung der Kennwortdatenbank selbst das System wahrscheinlich viel tiefgreifender beeinträchtigt hat, als dies mit einem einzelnen oder sogar vielen regulären Kennwörtern für Benutzerkonten möglich wäre. Folglich ist es eigentlich nicht stichhaltig zu versuchen, das einzugrenzen, was ein Angreifer tun kann, der in Besitz einer Kennwortdatenbank ist.

Einige Vorteile
Der Fairness halber muss ich zugeben, dass es ein paar Probleme gibt, bei denen die unechte mehrstufige Authentifizierung zu einer Lösung beitragen kann (vorausgesetzt, dass das System keine allein auf dem Kennwort basierende Anmeldung erlaubt). Sie kann beispielsweise zum Verhindern der Kennwortfreigabe verwendet werden. Dies kann jedoch ein Nachteil bei Systemen sein, bei denen es legitim ist, dass mehrere Benutzer Konten gemeinsam nutzen, beispielsweise bei gemeinschaftlichen Bankkonten.
Zudem könnte ein richtig erstelltes, interaktives Anmeldefenster (keine Websiteanmeldung) einen Benutzer zwingen, zusätzliche Authentifizierungsschritte zu durchlaufen, wenn der Tipprhythmus nicht dem gespeicherten Tipprhythmus entspricht. Dies kann zusätzliche Sicherheit bei einem kompromittierten Konto in einer hochsensiblen Umgebung bieten.

Irreführung von Benutzern durch Eye Candy
Eine der besten Möglichkeiten, Benutzer zu verwirren, besteht darin, inkorrekte Sicherheitsanzeigen bereitzustellen. Die häufigste ist wahrscheinlich das Bild des Vorhängeschlosses, das auf einer Webseite angezeigt wird, wie in Abbildung 1 dargestellt. Diese Seite geht sogar so weit, neben dem Vorhängeschloss das Wort „Sicher“ anzuzeigen.
Abbildung 1 Ein Beispiel für den Missbrauch des Bilds des Vorhängeschlosses, wobei es sich um einen beunruhigenden Trend handelt (zum Vergrößern auf das Bild klicken)
Sie werden wahrscheinlich wissen, dass das Bild eines Vorhängeschlosses und das Wort „Sicher“ auf einer Seite diese nicht sicher machen. Diese Praxis ist aber beunruhigend häufig anzutreffen, selbst bei sehr seriösen, populären Websites. Dies führt dazu, dass viele Benutzer nach diesen sichtbaren Sicherheitshinweisen im Text der Webseite suchen, statt dort, wo sie tatsächlich etwas bedeuten, nämlich in der Adressleiste. (Das W3C Web Security Context Wiki hat einen Eintrag zu diesem Problem, verfügbar unter w3.org/2006/WSC/wiki/PadlockIconMisuse.)
Leider gibt es immer noch sehr viele Beispiele für diesen Missbrauch. Untersuchungen haben gezeigt, dass Benutzer schädliche Websites selbst dann nicht identifizieren können, wenn die Zertifikate sehr offensichtlich sind (siehe www.usablesecurity.org/papers/jackson.pdf). Es kommt ganz auf die Fähigkeit an, eine Fälschung von der echten Website zu unterscheiden, selbst wenn die echte Website zum Vergleich nicht zur Verfügung steht. Dazu ist Geschick erforderlich. Irreführendes Sicherheits-Eye Candy auf Webseiten behindert die Entwicklung dieser Fähigkeit, da Benutzer von den falschen Informationen angezogen werden.
Eine besonders beunruhigende Variante dieses Problems ist in Abbildung 2 dargestellt. In diesem Fall ist die Seite, die die Informationen anzeigt, nicht sicher. In der Adressleiste sehen Sie „http“, womit das Protokoll angezeigt wird. Diese Website verwendet eine sehr häufige Optimierungstechnik. Statt die Seite zu verschlüsseln, die das Anmeldeformular enthält, wird nur die Übermittlung des Formulars verschlüsselt. Die Anmeldung ist sicher, wie es auf der Seite heißt, solange Sie „verschlüsselt“ mit „sicher“ gleichsetzen. Der Benutzer hat jedoch vor dem Senden keine Möglichkeit zu überprüfen, wohin die Anmeldeinformationen gesendet werden, und genau das ist der springende Punkt. Die Website zeigt kein Zertifikat, das die Website gegenüber dem Benutzer authentifiziert, bevor das Formular übermittelt wird. Es ist ein Spiel des Vertrauens, ähnlich wie ein Sich-rückwärts-fallen-Lassen, bei dem Sie annehmen, das die Person hinter Ihnen Sie auffangen wird. Wenn das Formular übermittelt wurde, kann der Schaden bereits angerichtet sein.
Abbildung 2 Sicherheits-Eye Candy auf einer nicht sicheren Seite (zum Vergrößern auf das Bild klicken)
Secure Sockets Layer (SSL), das Protokoll, das die Sicherheit in HTTPS bereitstellt, dient zwei wichtigen Zwecken. Erstens authentifiziert es den Server gegenüber dem Benutzer. Zweitens bietet es eine einfache Methode, einen Sitzungsverschlüsselungsschlüssel auszuhandeln, der zwischen Client und Server verwendet werden kann.
Wenn nur die eigentliche Übermittlung des Formulars verschlüsselt ist, wird das erste und wichtigste Ziel nicht erreicht. Websites, die diese Optimierung einsetzen, verwenden SSL nur als Möglichkeit, Schlüssel auszuhandeln. Ironischerweise könnten sie dies einfach durch Einsetzen eines standardmäßigen Schlüsselaushandlungsprotokolls tun und dadurch die Kosten und den Aufwand von SSL vermeiden.
Die in Abbildung 2 dargestellte Website ist keine Seltenheit. Viele Websites stellen SSL-Schutz nur für die Übermittlung des Formulars bereit, aber nicht für das Formular selbst. Diese Website weist jedoch eine noch beunruhigendere Eigenschaft auf. Wenn Sie https://www.<site>.com in die Browseradressleiste eingeben (beachten Sie die sichere https-Anzeige), leitet die Website Sie zur Nicht-SSL-Version der Website um! Selbst wenn Sie versuchen, ein Zertifikat zu prüfen, bevor Sie Ihre Anmeldeinformationen an die Website senden, weigert sich die Website, Ihnen das Zertifikat zu zeigen.
Nicht alle Websites sind so schlecht, aber es gibt viele, auf die dies zutrifft. Zwei der größten Kreditkartengesellschaften in den USA zählen zu den Missetätern. Tatsächlich stellt von den drei großen Kreditkartenunternehmen, die ich verwende, nur American Express im Anmeldeformular ein Zertifikat bereit. American Express leitet sogar HTTP-Anforderungen nach HTTPS um. Alle Achtung!
Ein letzter Gedanke in Bezug auf bedeutungsloses Sicherheits-Eye Candy und den Mangel an Zertifikaten im Anmeldeformular. Vielleicht fragen Sie sich, warum eine Website so verfahren würde. Es geschieht einfach aus Gründen der Wirtschaftlichkeit. Für das Anzeigen von Zertifikaten ist das Verschlüsseln der Seite erforderlich, und beim Verschlüsseln der Seite entsteht Verarbeitungsaufwand. Verarbeitungsaufwand bedeutet, dass mehr Computer für dieselbe Last erforderlich sind. Mehr Computer kosten mehr Geld. Wenn die Wahl zwischen dem Datenschutz der Kunden und höheren Gewinnen besteht, entscheiden sich viele Unternehmen leider für die höheren Gewinne.

Öffnen oder nicht öffnen
Kürzlich erhielt ich eine erstaunliche E-Mail-Nachricht von meiner Krankenkasse. Jeder, der in den letzten 10 Jahren einen Computer verwendet hat, weiß, dass er nicht angeforderte E-Mail-Anlagen nicht öffnen sollte. Sie können sich sicherlich meine Überraschung vorstellen, als ich die in Abbildung 3 dargestellte Nachricht erhielt.
Abbildung 3 E-Mail-Nachricht mit einer „sicheren Anlage“ (zum Vergrößern auf das Bild klicken)
Offenbar hatte ich auf der Website der Krankenkasse eine Frage gestellt (und dies bereits vergessen, als die verdächtige Nachricht eintraf). Und so antwortete das Unternehmen. Zuerst dachte ich, es handle sich um einen raffinierten Phishingplan. Als ich erkannte, dass es eine legitime Nachricht war, standen mir die Haare zu Berge.
Die erste Anweisung besteht darin, auf die Anlage zu doppelklicken, um die Nachricht zu entschlüsseln. Die Sicherheitscommunity und IT-Administratoren haben die letzten 10 Jahre damit verbracht, Benutzern beizubringen, dass sie NICHT auf Anlagen doppelklicken sollen. Und dann kommt ein Unternehmen daher (meine Krankenkasse ist übrigens nicht die einzige Organisation, die diesen Ansatz verwendet) und erklärt, dass ich aus Gründen der Sicherheit auf die Anlage klicken soll. Wie soll sich der Benutzer in einer solchen Situation verhalten? Welches Verhalten erlernt oder vergisst er?
Als Nächstes verwendete ich das Vorschaufeature in Microsoft® Office Outlook® 2007 zum Anzeigen des Inhalts. Wie Sie in Abbildung 4 sehen können, hielt Outlook diese Nachricht für einen möglichen Angriff und warnte mich davor, sie zu öffnen!
Abbildung 4 Outlook 2007 betrachtet das sichere Dokument als schädlich (zum Vergrößern auf das Bild klicken)
Es ist sowohl eine Ironie als auch traurig, dass eine Krankenkasse gegen diese sehr grundlegenden Sicherheitsprüfungen verstößt, die im weltweit populärsten E-Mail-Client verwendet werden. In Anbetracht der Tatsache, dass dieses Unternehmen seine neue Sicherheitslösung nicht einmal mit Outlook getestet hat, muss ich mich fragen, was dieses Unternehmen sonst noch zum Schutz meiner Daten tut. Oder, um es frei heraus zu sagen: Welche anderen Lösungen werden von dem Unternehmen allein zu dem Zweck implementiert, nicht des unzureichenden Schutzes von Personendaten beschuldigt zu werden? Das Ganze ähnelt dem Sicherheitstheater der Finanzinstitute. In diesem Fall ist meiner Meinung nach das Vermeiden von Beschuldigungen und nicht der Schutz des Kunden das Hauptziel der Lösung.
Ich wollte sehen, wobei es sich bei der Anlage wirklich handelte. Es stellte sich als ein ActiveX®-Steuerobjekt heraus. Um mir die Anlage ansehen zu können, musste ich sie in Internet Explorer® öffnen und das Objekt installieren. Mir wurde der beruhigende Bildschirm in Abbildung 5 angezeigt. Wie Sie sehen können, haben die Designer einiges unternommen, damit die Nachricht wie ein normaler Briefumschlag aussieht. Er ist sogar mit einem Stempel versehen, der behauptet, der Umschlag sei vertrauenswürdig.
Abbildung 5 Das sichere Dokument zeigt einen Umschlag mit dem Stempel „Vertrauenswürdig“ (zum Vergrößern auf das Bild klicken)
Diese Art von Technologie ist aus vielen Gründen beunruhigend. Erstens verstärkt sie ein sehr schlechtes Verhalten auf Benutzerseite, nämlich das Öffnen nicht angeforderter Anlagen. Zweitens ist in der eigentlichen Nachricht eine sehr schlechte Anweisung enthalten, das System so zu konfigurieren, dass Anlagen immer ohne Aufforderung geöffnet werden. Drittens scheint die Nachricht angesichts sich widersprechender Meldungen des Computers, denen zufolge die E-Mail besagt, dass sie vertrauenswürdig ist, und Outlook, dass sie nicht vertrauenswürdig ist, sehr verdächtig. Schließlich enthält die eigentliche Anlage bedeutungslosen Sicherheits-Eye Candy, der den Benutzer davon überzeugen soll, dass sie tatsächlich vertrauenswürdig ist. Wenn der Benutzer lernt, solchen Nachrichten zu vertrauen, ist es nur ein kleiner Schritt, dass schädlichen Nachrichten mit ähnlichem Aussehen ebenfalls vertraut wird.

Bereitstellen sicherer Kommunikation
Zugegeben, das Problem, auf das diese Technologie abzielt, ist sehr wichtig. Vertrauenswürdige Kommunikation mit Kunden ist schwierig. Diese Lösung ist jedoch „überzüchtet“. Sie dürfte den Kunden verwirren und führt möglicherweise zu einem ganz anderen Ergebnis als dem, das eigentlich erzielt werden sollte: Das System des Kunden wird kompromittiert.
Besser entworfene Websites verwenden heute ein „Nachrichtencenter“. Wenn das Unternehmen mit dem Kunden kommunizieren muss, sendet es eine E-Mail-Nachricht, die etwa Folgendes besagt: „Für Sie ist eine Nachricht im Nachrichtencenter vorhanden. Bitte besuchen Sie unsere Website, melden Sie sich an, und klicken Sie auf den Link zum Nachrichtencenter, um sich die Nachricht anzeigen zu lassen.“ Ein Unternehmen erhält Bonuspunkte, wenn es Secure Multipurpose Internet Mail Extensions (S/MIME) zum Signieren aller E-Mail-Nachrichten an den Kunden verwendet, sodass der Benutzer die Quelle authentifizieren kann. Es gibt einen weiteren Bonus, wenn die Nachricht keine Elemente wie „Bitte auf diesen Link klicken“ in der E-Mail enthält. Der Benutzer sollte die URL des Unternehmens manuell eingeben, um sicherzugehen, dass er die erwartete Website aufruft.
Mit einem Nachrichtencenter und einer signierten Nachricht kann ein Unternehmen einen vertrauenswürdigen Pfad für die Kommunikation mit dem Kunden erzielen. Alles, was der Kunde während des Nachrichtenworkflows sieht, ist authentifiziert, und das Unternehmen unterstützt keine schlechten Sicherheitsmaßnahmen.

Es geht um den Datenschutz
In den ersten beiden Ausgaben dieser Reihe wurde beschrieben, wie Sicherheitsfachleute Benutzern einen schlechten Dienst erweisen. Unsere Aufgabe besteht darin, die Sicherheit zu gewährleisten. Viele Entscheidungen, die getroffen werden, und Lösungen, die implementiert werden, verwirren aber den Benutzer und lehren ihn, schlechte Entscheidungen zu treffen, wobei er gleichzeitig in Sicherheit gewiegt wird. Wir sollten Benutzer mit diesen widersprüchlichen Ideen nicht überfordern.
Wie bereits erwähnt, geht es für die breite Masse der Benutzer bei der Sicherheit einfach um den Schutz von Kennwörtern und Kreditkartennummern. Die Betreffenden wünschen sich Technologie, die funktioniert und vertrauenswürdig ist. Leider müssen sie Entscheidungen treffen, und es ist unsere Aufgabe sicherzustellen, dass es fundierte Entscheidungen sind.
Im letzten Teil dieser Reihe geht es darum, wie einige der wichtigsten Technologien, die Verbrauchern zur Verfügung stehen, nicht die Erwartungen erfüllen. Ich werde auch meinen „Ruf zu den Waffen“ präsentieren. Lesen Sie daher bitte die Rubrik „Sicherheit auf dem Prüfstand“ im September 2008.

Jesper M. Johansson ist Softwarearchitekt mit dem Schwerpunkt Sicherheitssoftware und schreibt redaktionelle Beiträge für das TechNet Magazin. Er hat seine Doktorarbeit zum Thema Management Information Systems geschrieben, verfügt über mehr als 20 Jahre Erfahrung auf dem Gebiet der Sicherheit und ist Microsoft-MVP (Most Valuable Professional) im Bereich Unternehmenssicherheit. Sein aktuelles Buch ist das Windows Server 2008 Security Resource Kit.


Nachhaltige Computernutzung Filtern der Grünfärberei
Dave Ohara

Inhalt
Der Bedarf an Zahlen
Messen des Energieverbrauchs
Leistungsfaktor
Messen in der Produktion
Das Microsoft Enterprise Engineering Center
Zusammenfassung
Es gibt eine überwältigende Anzahl von Produkten und Lösungen, die als grün, energiesparend und effizienter vermarktet werden. Dieser Marketingschwindel führt zu Verwirrung auf dem Markt hinsichtlich der Frage, was tatsächlich umweltfreundlich ist. Selbst nach Untersuchung der Spezifikationen verschiedener Produkte ist es für einen IT-Experten schwierig, wenn nicht unmöglich, zu
bestimmen, welche Geräte verwendet werden sollen, wenn die Auswirkung auf die Umwelt ein wesentlicher Faktor ist. Bei allen Vorführungen werden immer umfangreiche Energieeinsparungen hervorgehoben, was Sie zu der Annahme verleitet, dass die Rendite die Aktualisierung eher rechtfertigt. Schließlich sollten die Energieeinsparungen die Gesamtkosten verringern.
Die Strategie zahlreicher Unternehmen, nahezu alles als umweltfreundlich zu kennzeichnen und das aktuelle Interesse an grünen Lösungen auszunutzen, führte zum Konzept der „Grünfärberei“, das sich auf das übertriebene Versprechen von Umweltvorteilen bezieht. Wie sehen mit den Energieeinsparungen also in Wirklichkeit aus? Dies ist nicht so eindeutig wie beispielsweise die Installation neuer energieeffizienter Glühbirnen in Ihrem Haus.
Während das Interesse an nachhaltigen IT-Lösungen ansteigt und der Markt für umweltfreundliche IT-Geräte sich ausweitet, treffen zahlreiche Personen und Unternehmen zu die voreilige Entscheidung, energieeffiziente Laptops, Desktops und Server bereitzustellen und Virtualisierung zur Verringerung des Energieverbrauchs einzusetzen. Es gibt jedoch wenige Unternehmen, die Energieüberprüfungen durchführen, um die tatsächlichen Vorteile der erworbenen Geräte zu bestimmen.
Obgleich das ideale Szenario darin besteht, Messungen in Ihrer Produktionsumgebung durchzuführen, kann dies auch kostspielig sein. Wenn Sie noch nicht soweit sind, Messungen in der Produktion durchzuführen, können Sie Ihre Energieüberprüfungen dennoch einfach zu einem früheren Zeitpunkt im Prozess durchführen, und zwar in Ihren Leistungs- und Evaluierungstestumgebungen. (Die meisten Unternehmen verfügen über eine Testumgebung oder Gruppe, die für das Testen und Evaluieren von Geräten vor einem Erwerb verantwortlich ist.) Hier können Sie Energieleistung als eines Ihrer Testkriterien hinzufügen und diese Ergebnisse daraufhin beim Treffen von Kaufentscheidungen mit einbeziehen, statt sich auf die von den Herstellern genannten Zahlen zu verlassen. Erstellen Sie also für das Testen Ihre eigene Datenbank zum Energieverbrauch von Geräten. Dann können Sie die Grünfärberei ignorieren und selbst entscheiden, was funktioniert.
Natürlich sollte ich darauf hinweisen, dass, wenn Sie präzise Zahlen für den Betrieb unter Ihrer echten Last wünschen, Sie Ihre Produktionsumgebung überwachen müssen. Je schneller Sie mit der Überwachung Ihrer Produktionsumgebung beginnen, desto besser ist dies für Ihr Unternehmen und Ihren Nettoprofit. Dieser Prozess ist für Ihren langfristigen Erfolg ausschlaggebend.

Der Bedarf an Zahlen
In einer idealen Situation gäbe es unabhängige Tests, die die Leistung der Hardwaregeräte pro Watt unter realistischen Benutzerlasten evaluieren. Die Branche befindet sich aber erst in der Anfangsphase der Entwicklung und Bereitstellung solcher Tests. Die, die bereits jetzt verfügbar sind, wie z. B. der SPEC Power Benchmark, stecken noch in den Kinderschuhen. Wie gut diese Energietests funktionieren werden, wenn sie fertig entwickelt sind, bleibt abzuwarten. Aber wie bei jedem Test werden die Hersteller lernen, wie Sie Ihre Geräte für optimale Testergebnisse modifizieren können.
Erfahrene IT-Experten haben gelernt, von Testumgebungen durchgeführte Tests in Frage zu stellen. Ebenso wie Autohersteller sicherstellen, dass sie ihre besten Autos für Fahrtests verwenden, werden IT-Anbieter darauf achten, ihre effizientesten Gerätekonfigurationen Energietests zu unterziehen.
Erwägen Sie die Verwendung von Virtualisierungstests zum Vergleich einer Gruppe übermäßig bereitgestellter Server, für die keine Serverkonsolidierung zur Demonstration der Vorteile einer Virtualisierung ausgeführt wurde. Anbieter schweigen sich häufig über Probleme wie potentielle Rückschlageffekte in Energieeinsparungsprojekten wie Virtualisierung aus. Dies trifft meist dann zu, wenn die Energieeffizienz Kosten verringert und die Nachfrage in Antwort darauf steigt, was den Energieverbrauch und die Verwendung erhöht. Wenn Sie also auf eine Lösung wie die Virtualisierung treffen, die als Allheilmittel für Energieeinsparungen vermarktet wird, sollten Sie skeptisch sein. Sie müssen wirklich abwarten, wie alles zusammen funktioniert und welche Auswirkungen sich mit der Zeit einstellen werden.
Wie bringen Sie Ihr Unternehmen also auf den richtigen Weg? Es gibt jede Menge Berater, die sich Bewertungen teuer bezahlen lassen. Diese Lösung hat jedoch einige Nachteile. Möchten Sie das Fachwissen für Effizienz tatsächlich an jemanden außerhalb des Unternehmens weitergeben? Möchten Sie sich auf einen Berater verlassen, der einen Langzeitvertrag aufrechterhalten und eine Abhängigkeit von seinem Service erreichen möchte?
Sie könnten hieraus ein riesiges Projekt machen und Dutzende Mitarbeiter an der Bestimmung Ihrer Strategie für eine Umweltverträglichkeit beteiligen. Widerstehen Sie der Versuchung, einfach eine Stelle in Ihrer Umgebung auszuwählen und mit der Messung zu beginnen. Während die Absicht richtig ist, macht die Methode keinen Sinn, da es sich um einen willkürlichen Vorgang handelt. Sie müssen herausfinden, wo der Energieverbrauch bei Ihnen tatsächlich liegt und wo Sie wirklich etwas erreichten können.

Messen des Energieverbrauchs
Sie müssen auf neue Art darüber nachdenken, was funktioniert. IT-Experten wissen, wann eine Hardware nicht funktioniert, z. B. wenn ein Dienst versagt. Was aber, wenn eine Hardware nicht ordnungsgemäß in Bezug auf Energieverbrauch funktioniert? Dies geht wahrscheinlich unter, da die meisten Unternehmen über keine Daten verfügen, um ihre Grundenergieeffizienz zu bestimmen.
Wie kommen Sie an diese Zahlen? Von einigen wird ein Energieguru empfohlen. Das muss jedoch jemand sein, der sich mit der Unternehmensstruktur und mit Energiefragen auskennt. Eine einfachere, leichter umzusetzende Methode ist das Hinzufügen von Tools zur Messung von Energie zu vorhandenen Funktionen in Leistungstestumgebungen.
Es gibt eine Reihe von Geräten zur Messung von Energie. Derzeit gibt es leider kein perfektes Gerät für eine IT-Leistungstestumgebung. Auf niedriger Stufe wird in den USA z. B. ein „Watts Up Pro“ verwendet. Dies ist ein USB-Gerät, das Inlineenergiemessung für 120 V durchführt. Ein weiteres Gerät ist das „Smart-Watt“, ein für Netzwerke geeignetes Energieverbrauchsgerät mit 100–240 V Spannung und einem Bereich von 15–30 Amp. Smart-Watt-Geräte sind auch mit Temperatur- und Feuchtigkeitssensoren zur Messung von Umgebungsfaktoren erhältlich. Dann gibt es noch die industriellen Energieanalysegeräte, wie den „Extech Appliance Tester 380801“ und „Fluke 345 Power Clamp“. Sie sollten Geräte wie diese problemlos finden können, um die Testanforderungen in Ihren Testumgebungen zu erfüllen.

Leistungsfaktor
Wenn der Bereich der Energiemessung für Sie neu ist, ist es wichtig, dass Sie das Leistungsfaktorkonzept verstehen. Der Leistungsfaktor eines elektrischen Wechselstromsystems ist als Verhältnis der echten Leistung zur scheinbaren Leistung und wird als Zahl zwischen 0 und 1 dargestellt. Echte Leistung (Watt) ist die Kapazität für den Stromkreis zur Arbeitsdurchführung. Die scheinbare Leistung (VA) ist das Produkt aus Strom und Spannung im Stromkreis.
Wahrscheinlich fragen Sie sich, wozu dies wichtig ist. Sehen Sie sich Abbildung 1 an. Das Bild zeigt ein die Energie überwachendes Gerät von Smart Works, das verwendet wird, um die Energieeffizienz eines Laptops, einer Glühbirne und eines Kondensators zu vergleichen. Eine Glühbirne hat eine 50-Watt-Last und 50 VA für einen Leistungsfaktor von 1,0. Ein Kondensator mit einer rein kapazitiven Last verbraucht eine 2-Watt-Last und 193 VA für einen Leistungsfaktor von 0,01. Der Laptop verwendet 22 Watt Energie, hat jedoch einen VA-Wert von 48 für einen Leistungsfaktor von 0,47. Der niedrige Leistungsfaktor des Laptops ist auf ein ineffizientes Netzteildesign zurückzuführen und war wahrscheinlich das Ergebnis von Herstellungskostenzielen.
Abbildung 1 Energieverbrauch für einen Laptop, eine Glühbirne und einen Kondensator (zum Vergrößern auf das Bild klicken)
Bei so viel Interesse an Energieeffizienz sind Anbieter nun daran interessiert, die Leistung von Netzteilen unter erwarteten Bedingungen zu verbessern. Wenn Sie den Leistungsfaktor von vorhandenen Geräten mit dem von neuen Geräten vergleichen, stellen Sie möglicherweise fest, dass Sie ein wenig Energiekapazität leicht durch effizientere Netzteile und höhere Leistungsfaktoren zurückgewinnen können.

Messen in der Produktion
Das Ziel des Messens von Ergebnissen in der Leistungstestumgebung soll die Leistung in der Produktionsumgebung vorhersagen helfen. Das Problem mit dem Messen von Energieverbrauch in der Produktion sind die Kosten, die mit dem Durchführen von Messungen für alle Geräte verbunden sind. Eine Strategie zum Verringern der Kosten für das Messen des Energieverbrauchs in der Produktion ist jedoch das Messen an der Stromverteilereinheit (power distribution unit, PDU) sowie die Sammlung von mehreren Gerätemessungen. Abbildung 2 zeigt eine Beispielenergiemessung von einem PDU mit mehreren Teilen desselben Geräts in einer Einheit. Weil der durchschnittliche Energieverbrauch pro Server berechnet werden kann, bietet Ihnen diese Art der Messung Energieverbrauchszahlen in der Produktion.
Abbildung 2 Messen an der Stromverteilereinheit (zum Vergrößern auf das Bild klicken)
Bei der Messung jedes Geräts sollte die Energieinformation in Ihre Konfigurationsverwaltungsdatenbank integriert werden. Wenn dies zu schwierig ist, können Sie Ihre eigene Datenbank oder zumindest eine Excel®-Tabelle erstellen, die Geräte und ihren Energieverbrauch auflistet. Wenn Sie damit beginnen, mehr Geräte zu sammeln, können Sie Schätzungen für andere eintragen, um eine Berechnung Gesamtenergiekapazität durchzuführen. Bedenken Sie, dass ein neuer energieeffizienter Server mehr als die Hälfte seiner Energielast im Leerlauf verglichen mit Spitzenzeiten verbraucht. Wenn Sie über alte Server verfügen, die veraltete Lösungen ausführen, verbrauchen die alten Server eine erhebliche Menge an Energie, selbst im Leerlauf. Dies ist einer der einfachsten Wege, Energiekapazität zurückzugewinnen.
Wenn Sie Ihre Verbesserungsanstrengungen fortsetzen möchten, ist der nächste Schritt die Berechnung der Energie pro Rack, das in Ihrem Datencenter verwendet wird. Sie müssen außerdem Ihre Energie- und Kühlungskapazitäten kennen, bevor Sie die Umgebung ändern. Mit der Zeit werden Sie Ihre Geräte in Bezug auf ihre Energieanforderungen und nicht nur den Platz, den sie beanspruchen, sehen. Platz ist ein einfaches Konzept. Es ist statisch und sichtbar. IT-Experten können bereitwillig zu 1U-, 2U- und 4U-Servern Auskunft geben, aber wenn Sie das Gespräch auf 200-Watt-Server im Vergleich zu 450-Watt-Servern bringen, werden Sie feststellen, dass dieselben IT-Experten auf diesem Gebiet nicht ganz so sicher sind. Dies ist eine neue Sprache für IT-Ausrüstung und ist heutzutage in Datencentern von großer Bedeutung. Viele verfügen über ausreichend Platz für mehr Geräte, auch wenn sie ihre maximalen Energiekapazitäten ausgeschöpft haben.

Das Microsoft Enterprise Engineering Center
Das Microsoft Enterprise Engineering Center (EEC) fügte seiner Einrichtung vor kurzem Funktionen zur Energiemessung hinzu. Das EEC (microsoft.com/windowsserver/evaluation/eec/default.mspx), das sich in der Microsoft-Unternehmenszentrale in Redmond (Washington) befindet, ist eine hochmoderne Testumgebung für die komplexesten Computerumgebungen.
Mit Hardware- und Netzwerkgeräten (siehe Abbildung 3), die mehr als 40 Millionen Dollar wert sind, kann das EEC die kompliziertesten Unternehmensproduktionsumgebungen nachbilden. Die Gruppe ist mit zahlreichen Netzwerk-, Speicher- und Client-/Server-Lösungsanbietern assoziiert, um eine Mischung aus neuesten Technologien und Legacyplattformen anzubieten. Das Ziel besteht darin sicherzustellen, dass jeder Test die aktuelle Umgebung des Kunden genau widerspiegelt. Der neueste Dienst, der in der Einrichtung entwickelt wird, ist die Berichterstattung über den Energieverbrauch von Lösungen, um einen Bezugswert für die Leistung pro Watt bereitzustellen.
Abbildung 3 Eine der vielen Zeilen in der EEC-Testumgebung (zum Vergrößern auf das Bild klicken)
In den vergangenen Jahren hat das EEC zahlreiche Datencenteroperatoren erlebt, die nicht mehr genügend Energie und Kühlung für Ihre Geräte hatten. Hochmoderne Geräte werden häufig mit höheren Energiedichten geliefert, was die Einrichtungen stärker belastet. Die EEC-Mitarbeiter wissen aus eigener Erfahrung, was es kostet und wie viel Zeit es erfordert, die Energie- und Kühlungsinfrastruktur zu aktualisieren. Um also effizienter zu arbeiten und kostengünstiger zu sein, hat das EEC die Fähigkeit hinzugefügt, die Energie pro Gerät zu messen.
Einige der vom EEC verwendeten Tools und Geräte waren nicht lieferbar, als dieser Artikel geschrieben wurde. Da es sich hierbei um eine neue Lösung handelt, wird das EEC weiterhin daran arbeiten, bessere Techniken zu entwickeln, in Zusammenarbeit mit Kunden, Anbietern, und Microsoft-Entwicklungsteams. Das EEC gibt die Methoden, die es bisher entwickelt hat, direkt an seine Kunden weiter, um Feedback zu bekommen und den Kunden die Erstellung ihrer eigenen Bezugswerte zu ermöglichen.
Denken Sie aber nicht, dass die Ergebnisse offensichtlich sein werden. Das EEC hat einige der interessanten Ergebnisse der Gruppe bei der Verwendung von Energieüberwachungsfeatures in den EEC-Leistungstestumgebungen weitergegeben:
  1. 1. Das Ausschalten eines Geräts verringert den Energieverbrauch nicht notwendigerweise um die erwartete Menge (siehe Abbildung 4). In einem Fall, in dem es um Serverhardware ging, fand das EEC ein Gerät, das im ausgeschalteten Zustand tatsächlich 100 Watt verbrauchte, während es noch angeschlossen war. Dies hat viele überrascht, und das EEC hat das Setup wiederholt untersucht. Sie verwendeten schließlich ein Infrarotthermometer, um Einlass- und Auslasstemperaturen zu messen, und bestätigten, dass das Gerät tatsächlich 100 Watt im ausgeschalteten Zustand verbrauchte.
  2. Software kann erhebliche Auswirkungen auf den Energieerbrauch haben. Auf identischen Netzwerkschaltern mit identischer Hardware und BIOS-Konfigurationen, auf denen unterschiedliche Netzwerksoftware ausgeführt wurde, zeigten sich 21 % Unterschied in Bezug auf den Energieverbrauch. High-End-Lösungen mit mehreren deaktivierten Prozessen und Features, wie Sicherheits- und Überwachungstools, verbrauchen häufig mehr als ihre einfacheren Low-End-Gegenstücke.
  3. In Virtualisierungsszenarios hat das EEC den Energieverbrauch im Vergleich mit E/A-Nutzung und CPU-Auslastung gemessen, um zu bestimmen, wann eine bestimmte Hardware ihre Leistung pro Watt maximiert. Das EEC stellte fest, dass eine zu starke Konzentration auf CPU-Auslastung zu zu vielen virtuellen Maschinen, die auf einen physischen Computer geladen sind, führen kann, die die tatsächliche Gesamtleistung pro Watt herabsetzen können.
  4. Geräte mit einer höheren Dichte haben wie zu erwarten mehr Energie- und Kühlungsprobleme. Bei der Bereitstellung von Systemen mit höherer Dichte sollten die Mitarbeiter für Energie- und Kühleinrichtungen so früh wie möglich zu Rat gezogen werden. Diese Geräte könnten sich gut eignen für ihre eigenen Energieüberwachungsgeräte in der Produktion, wenn Sie wissen, dass die Umgebung Leistungsbeschränkungen haben wird.
  5. Doppelte Netzteile können erheblich mehr Energie verbrauchen als ein einzelnes Netzteil.
  6. Scheinbar identische Hardwaregeräte mit identischen Konfigurationen können einen sehr unterschiedlichen Energieverbrauch aufweisen. Die beobachteten Unterschiede waren so bedeutend, dass die EEC-Mitarbeiter die Hardware zweifach überprüft haben, um sicherzustellen, dass sie wirklich gleich konfiguriert war.
  7. Bei den Wattbewertungen auf dem Produktschild handelt es sich nicht um tatsächliche Verbrauchszahlen, sondern um die Nennbelastbarkeit von Netzteilen.
  8. Die Verwaltung einer Datenbank mit Energieverbrauchstests und Ergebnissen pro Gerät und Unterkomponente ist entscheidend für die Bewahrung von Kenntnissen und den Vergleich von Daten.
  9. Unterschiedliche Konfigurationen mit unterschiedlicher Größe des Arbeitsspeichers verbrauchen unterschiedliche Energiemengen. Weniger DIMMs verbrauchen normalerweise weniger Energie – z. B. 4 x 2 GB-DIMMs im Vergleich mit 8 x 1 GB-DIMMs. Es gibt aber einige Fälle, in denen weniger DIMMS mehr Energie verbrauchen.
Abbildung 4 Vergleich des Energieverbrauchs im eingeschalteten und im ausgeschalteten Zustand (zum Vergrößern auf das Bild klicken)

Zusammenfassung
Durch Hinzufügen der Fähigkeit, den Energieverbrauch in Ihren Leistungstestumgebungen zu messen, können Sie damit beginnen, Ihre eigene Datenbank über den Energieverbrauch pro Gerät mit genauen Zahlen für Ihre tatsächlichen Lasten zu füllen. Bei der Bereitstellung dieser Lösungen sollten Sie die Ergebnisse in einer geschlossenen Feedbackschleife bereitstellen, um die Genauigkeit Ihrer Tests in Leistungstestumgebungen zu bestimmen. Wie das EEC bei der Ausführung seiner eigenen Messungstests herausgefunden hat, gibt es einige wirklich interessante Details, nach denen Sie Ausschau halten können, um Hilfe bei der Filterung der Grünfärberei zu erhalten und die Wahrheit herauszufinden.
Diese Methode der Messung in Leistungstestumgebungen wird einen Einfluss auf den Markt insgesamt haben, um damit zu beginnen herauszufinden, was tatsächlich am energieeffizientesten ist. Mit der Zeit werden Hersteller nicht mehr darum herumkommen, ihre Behauptungen bezüglich Energieeinsparungen mit genaueren Daten zu belegen. Ebenso werden IT-Experten mit der Zeit von Watt pro Gerät als alltägliche Erwerbskriterien sprechen. Dies muss zum allgemeinen Brauch werden, insbesondere für Unternehmen, die große Mengen an Servern kaufen. Sie können bereits heute damit beginnen, über Energie als eine Ihrer wertvollsten IT-Ressourcen nachzudenken.
Kühlung im Datencenter
Kühlung im Datencenter bietet weitgreifende Möglichkeiten für eine Verringerung des Energieverbrauchs. Es ist erstaunlich, wie viel Hitze in einem Datencenter entsteht und wie viel Energie eingesetzt wird, um die Hardware kühl zu halten. Wenn Sie Ihre Kühlung aber erfolgreich einsetzen, Probleme beheben und effizientere Kühllösungen entwickeln möchten, benötigen Sie eine Temperaturüberwachungslösung. Ziehen Sie die Lösung in Betracht, die Microsoft-Datencenter verwenden.
Microsoft Research hat ein Temperatursensornetzwerk für die Datencenter geschaffen, das eine verbesserte Temperaturregulierung und die Evaluierung verschiedener Kühlungsverbesserungen ermöglicht. Ein Microsoft-Datencenter hat z. B. die Verwendung von Luftschleiern am Ende des Gangs untersucht, durch die die Trennung von heißer und kalter Luft verbessert werden soll. Nachdem die Luftschleier installiert waren, begannen einige Server damit, Überhitzungsalarme zu senden. Die Betriebstechniker haben natürlich den Gebläsewind des Kühlsystems erhöht, um mehr kühle Luft in Umlauf zu bringen. Zu ihrer Überraschung sendeten jedoch noch mehr Server Überhitzungsalarme. Alle diese Server befanden sich im unteren Rack – der untere Bereich ist natürlich in der Regel der kühlste Bereich eines Hochflurkühlsystems.
Mithilfe des Sensornetzwerks bestätigten die Techniker, dass die Racks weiter oben kühler waren, und der untere Bereich des Racks am wärmsten. Sie stellten relativ bald fest, dass heiße Luft aus dem heißen Gang zwischen dem unteren Bereich des Racks und dem Fußboden abgezogen wurde – ein Ergebnis des Bernoulli-Prinzips. Sie konnten das Überhitzen schnell durch Abdichten des unteren Bereichs des Racks und Verringerung der Gebläsewindgeschwindigkeit beheben.
Dies ist genau die Art von Daten, die das Microsoft Enterprise Engineering Center bei der Durchführung von Leistungstests sammelt und analysiert. Das EEC setzte vor kurzem Microsoft Research davon in Kenntnis, dass sie für einen Bereitstellungstest bereit seien. Innerhalb eines Tags wurde das System bei 10 Racks bereitgestellt, und die Installation war in nur einer Stunde abgeschlossen. Das EEC ist nun in der Lage, Kühlprobleme und deren Beziehung zur Hardwareleistung zu untersuchen und besser zu verstehen.
Natürlich ist die einfache Überwachung keine Lösung an sich. Der Schlüssel liegt darin, Problembereiche zu finden, die Sie lösen können, Änderungen durchzuführen und unterschiedliche Lösungen zu evaluieren, um zu sehen, ob sie zum erwarteten Ergebnis führen. Schließlich wollen Sie nicht böse überrascht werden, wenn Ihre neue Kühllösung unerwartet ein Überhitzen Ihrer Racks verursacht.

Dave Ohara verfügt über 26 Jahre Erfahrung im Technologiebereich. Er arbeitet nun mit mehreren Unternehmen an der Implementierung grüner Initiativen.


Berichte aus der Praxis IMAP rettet die Welt
R'ykandar Korra'ti

Manchmal können Lösungen für neue, kleine Probleme auch alte, große Probleme lösen. Dies ist einer dieser Fälle.
Im letzten Winter kaufte sich unser Webadministrator ein MacBook. Sie hatte bisher ausschließlich Windows® ausgeführt, aber nun standen ihr OS X und in einem virtuellen Computer auch Windows XP zur Verfügung, um ihre Windows Mobile®-Geräte und ein paar andere kleine Aufgaben zu synchronisieren.
Sie benötigte von beiden Betriebssystemen aus Zugriff auf alle ihre E-Mail-Archive. Sie wollte aber auf der Mac-Seite nicht Entourage ausführen – das wäre zu einfach gewesen. Nein, sie wollte Mail.app ausführen, den zu OS X gehörenden E-Mail-Client. Und sie hatte alles ungespiegelt im lokalen Speicher ihres Laptops gespeichert. Meine Aufgabe bestand darin, dafür zu sorgen, dass es funktioniert.
Dass die Archive überall lesbar sein würden, war nur das erwähnte kleine Problem, denn (und das ist die erste Moral unserer Geschichte) alles, einschließlich Exchange Server, Microsoft® Office Outlook® und Mail, verwendet IMAP4. IMAP4 ist ein Messagingprotokoll zur Behandlung von Nachrichtenspeichern von Thin Clients auf dem Server. Es bietet weniger Features als Exchange, aber es funktioniert (siehe „How IT Works: IMAP4“ in der Ausgabe des TechNet Magazins vom März/April 2006 unter technet.microsoft.com/magazine/cc161016).
Es mussten ein paar Einstellungen geändert werden, um IMAP4 über SSL online bereitzustellen, und alle ihre lokalen Ordner mussten auf den Server kopiert werden, und schon klappte es! Sie konnte auf allen Clients auf E-Mails zugreifen und ihre Windows Mobile-Geräte aktualisieren. Das Problem war gelöst.
Eine einfache Lösung für ein potenziell schwieriges Problem zu finden, ist aber ähnlich wie die Anschaffung einer neuen Tischkreissäge. Plötzlich suchen Sie nach mehr Sperrholz, und bald haben Sie ganze Bühnenbilder gebaut und können „Romeo und Julia“ inszenieren.
Unser winziger ISP führt Windows, OS X, Mac OS und Linux aus und hat irgendwo am Rand sogar ein einsames, altes AmigaOS-System, das auf einen Freund wartet. Vor langer Zeit haben wir Usenet-Nachrichten und UUCP-Mail auf diesem Amiga gehostet. Er erstellte Archive, die im RFC-733/AmigaUUCP-Format gespeichert wurden. Wir haben auch Microsoft Mail-Archive (.mmf-Format) und einige ähnlich alte UNIX-E-Mail-Archive (.mbox-Format). Sie waren einfach nur vorhanden und machten sich über uns lustig. Es war ein Problem, über das wir hin und wieder nachdachten, bevor wir schreiend davonrannten.
Dieses Szenario bringt uns zur zweiten Moral unserer Geschichte, nämlich dem überlieferten Motto, um der Gefahr durch Hacker zu begegnen: Löschen Sie nie etwas, das Sie nicht ersetzen können.
Wir nahmen die Microsoft Mail-Archive zuerst in Angriff. Outlook kann bereits seit einiger Zeit keine .mmf-Dateien mehr importieren. Beim Aktualisieren von Clients im Laufe der Jahre haben wir aber mindestens eine Lizenz für jedes ältere Produkt behalten, denn man weiß ja nie. Unser Regal mit Lizenzen ist praktisch eine Zeitskala der Microsoft Corporation. Sie brauchen MS-DOS®? OS/2 1.31? Microsoft Mail? Office 95? Kein Problem. Wünschen Sie die englische oder die französische Version?
Outlook 2000 importierte .mmf, aber seine IMAP-Unterstützung war seltsam, und gelegentlich wurden Headerdaten gelöscht. Zudem konnte es nicht gleichzeitig mit IMAP4- und Exchange-Servern kommunizieren. Dies war ärgerlich, aber kein schwerwiegendes Problem. Wir importieren einfach die .mmf-Dateien über Outlook 2000, aktualisieren auf unsere aufbewahrte Lizenz von Outlook 2003, und ein paar Stunden Drag & Drop später sind 15 Jahre alte Archive online und können überall angezeigt werden. Das Verfahren für .mbox ist ähnlich. Sie führen einen mbox-kompatiblen IMAP-Server auf einem Linux-Computer aus und stellen die Archive im .mbox-Format in sein Arbeitsverzeichnis. Dann verwenden Sie Outlook-IMAP-Unterstützung zum Verknüpfen und Kopieren von Ordnern zum gewünschten Produktionsserver.
Für die Amiga-Archive andererseits musste ein wenig C-Code geschrieben werden, um die RFC-733-Header in das RFC-822-Format zu konvertieren. Zudem mussten wird die alten Nachrichtenteiler im SysV-Stil loswerden und die seltsamen Daten der Zeile „Von:“ abrufen. Dieser Preis muss gezahlt werden, wenn man sich nicht früh genug um Probleme kümmert. Nun war aber aus dem AmigaUUCP-Format das .mbox-Format geworden. Nach dem Speichern im selben Arbeitsverzeichnis konnte Outlook-IMAP4 die E-Mails abrufen. Sogar die Anlagen waren für uns praktisch verpackt.
Wir haben jetzt Archive bis 1990 in einem einheitlichen Format online, und wir suchen nach weiteren Archiven ... einfach weil wir es können. Wie finden Sie das?

R'ykandar Korra'ti, Postmasterin eines kleinen, genossenschaftlichen Internetdienstanbieters, lebt mit ihrer Partnerin Anna in der Nähe von Seattle. Früher war sie bei Microsoft für den Versand von E-Mail-Produkten verantwortlich und schreibt jetzt technische Artikel, wenn sie nicht gerade an äußerst obskuren Liedtexten für die Mandoline arbeitet. Agenten, die sie buchen möchten, erreichen sie unter darako@murkworks.net.


Windows Confidential Auf der Vergangenheit aufbauen
Raymond Chen

Einer meiner Kollegen rettete einen Alpha AXP-Computer aus einem verstaubten Wandschrank. Beim Starten des Systems entdeckte er, dass eine 64-Bit-Version von Windows® aus der Zeit von Anfang 2000 ausgeführt wurde. Wie ist das möglich?
Damals hatte ich einen dieser Computer in meinem Büro. In seiner Blütezeit war dieser Computer ein Gerät von enormer Leistungsstärke. Er hatte etwa die Größe eines Kühlschranks und machte ungefähr so viel Lärm wie ein Staubsauger. Er war mit vier (!) Alpha AXP-Prozessoren ausgestattet, von denen jeder mit atemberaubenden 400 MHz arbeitete. Er hatte ein Gigabyte RAM und einen Festplattenspeicher von dreizehn Gigabyte, der auf ein Dutzend schnelle SCSI-Laufwerke verteilt war. Dies mag heute kümmerlich scheinen, aber in den 90er Jahren wurde man um diese Alpha AXP-Computer von allen beneidet.
Als Compaq 1999 bekanntgab, dass Windows auf dem Alpha AXP nicht mehr unterstützt würde, standen bei Microsoft plötzlich viele Alpha AXP-Systeme ohne offizielle Aufgabe herum. Einige dieser Computer wurden jedoch für verschiedene inoffizielle Aufgaben eingesetzt. Ich verwendete mein Alpha AXP-System, um den gesamten Windows-Quellcode zu indizieren. Sie können sich vorstellen, wie praktisch es für einen Programmierer sein kann, alle Aufrufer einer Funktion in nur wenigen Sekunden identifizieren zu können oder den Quellcode für eine Funktion oder ein Dialogfeld zu suchen, das in einer Debugablaufverfolgung angezeigt wird.
Aber selbst bei einer einfachen Aufgabe wie dem Indizieren des Windows-Quellcodes wurde der Alpha AXP bald von den Computern der x86-Klasse überholt. Diese waren preisgünstiger und schneller, verfügten über mehr Festplattenspeicher und hatten mehr Speicher. Aus diesem Grund stand mein Computer bald bei seinen vergessenen Brüdern. Das Ende der Unterstützung für den Alpha AXP bedeutete offenbar das Ende dieser Computer, aber dann erhielten sie die Gelegenheit, ein ruhmvolles Ende zu finden, indem sie ihren letzten Atemzug im Dienst der nächsten Generation taten.
Das 64-Bit-Windows-Projekt war bereits im Gange, und von den 64-Bit-Prozessoren, die in Betracht gezogen wurden, stand nur der Alpha AXP tatsächlich in physischer Form zur Verfügung. Der Intel Itanium-Prozessor befand sich in der Entwicklung und konnte nur auf einem Simulator ausgeführt werden, und die AMD64-Architektur war noch nicht erfunden worden. Daher wurde 64-Bit-Windows anfänglich auf dem Alpha AXP entwickelt.
Als Compaq bekannt gab, dass Windows nicht mehr auf dem Alpha AXP unterstützt würde, begannen alle diese Alpha AXP-Computer, die zuvor für 32-Bit-Windows 2000-Entwicklung und -Tests verwendet worden waren, insgeheim ein Leben als Testcomputer für ein 64-Bit-Betriebssystem, das in dieser Form nie ausgeliefert wurde. Der Alpha AXP war lediglich eine Plattform für Machbarkeitsstudien.
Die Alpha AXP-Computer erfüllten diese Rolle gut und stellten dem 64-Bit-Windows-Team echte Hardware für seine Arbeit zur Verfügung, sodass das Betriebssystem nicht auf einem Itanium-Simulator ausgeführt werden musste. (Sie können sich sicherlich vorstellen, wie langsam er war.) Natürlich war der Alpha AXP nicht die endgültige Zielhardware, aber er war eine große Hilfe. Als physische Itanium-CPUs auf den Markt kamen, gab es diese Nische für die Alpha AXPs nicht mehr, und sie verschwanden erneut in verstaubten Wandschränken.
Meine Freunde, die in den Microsoft-Archiven arbeiten, holten meinen alten, treuen Alpha AXP für diese Fotoaufnahmen aus seinem staubigen Verlies und fotografierten ihn zusammen mit einem der Produkte, die durch ihn ermöglicht wurden: die 64-Bit-Edition von Microsoft Windows Server® 2003. In der Tat ist noch der Staub auf den Fotos zu sehen.

Raymond Chen befasst sich auf seiner Website „The Old New Thing“ und in seinem gleichnamigen Buch (Addison-Wesley, 2007) mit der Geschichte von Windows und mit der Win32-Programmierung. Er würde lieber nicht in einen staubigen Wandschrank gesperrt werden.