Nachträglicher Identitätswechsel in der TFS-Datenbank
Mit der Aktualisierung von Team Foundation Server (TFS) 2008 auf 2010 im letzten Jahr war bei mir auch ein Wechsel des Server-Betriebssystems verbunden. Eine direkte Aktualisierung von 32-bit auf 64-bit ist nicht möglich, so blieb nur eine Neuinstallation. Bei dieser habe ich auch den Servernamen geändert.
Leider war mir damals nicht bewusst, dass man in diesem Fall mit TFSConfig Identities sofort nach der Installation auch die Identitäten in der TFS-Datenbank anpassen muss. Unterlässt man dies, dann leben die alten Benutzerzuordnungen weiter und es werden für den neuen Servernamen neue Zuordnungen angelegt. Die Auswirkungen zeigten sich dann gleich in den Arbeitsaufgaben (Work Items), bei denen aus dem Benutzer Sven der Benutzer SERVER-ALT\Sven wurde. Ein Speichern ist nur noch möglich, wenn die Arbeitsaufgabe dem neuen Benutzer zugeordnet wird, da SERVER-ALT\Sven keinen gültigen Benutzernamen mehr darstellt.
Nun ist es etwas mühselig, die Änderung des zugewiesenen Benutzers bei mehreren 100 Arbeitsaufgaben für jede Arbeitsaufgabe einzeln zu machen. Ein guter Helfer ist hier der angebotene Webzugriff über http://tfs-server:8080/tfs/web/ auf die Arbeitsaufgaben, mit dem sich Massenänderungen in einem Rutsch durchführen lassen.
Damit waren die größten Probleme des unterlassenen Identitätswechsel behoben. Der verbleibende Eintrag von SERVER-ALT\Sven für den Ersteller der Arbeitsaufgabe war nur ein Schönheitsfehler, an den man sich gewöhnen konnte bzw. musste, da dieser Wert schreibgeschützt ist und nicht geändert werden kann. Zum Problem wurde der Schönheitsfehler erst bei der Bearbeitung von Fehlern, die vor der Serverumstellung angelegt wurden. Beim Einchecken mit gleichzeitigem Abhaken der Arbeitsaufgabe kam die Fehlermeldung, dass einige Daten nicht gültig waren. Den Grund sieht man, wenn man in der Arbeitsaufgabe den Status von Aktiv auf Gelöst setzt. Dabei wird automatisch der Wert von Erstellt von (Created By) auf Zugewiesen an (Assigned To) übertragen. Aus dem Benutzer Sven wurde wieder SERVER-ALT\Sven, welcher das Speichern der Arbeitsaufgabe bei der Gültigkeitsprüfung verhindert.
Eine endgültige Lösung der Identitätsprobleme führt nur über einen manuellen Eingriff an der TFS-Datenbank. Die Benutzerdaten in den Arbeitsaufgaben werden in den Tabellen dbo.WorkItemsAre, dbo.WorkItemsWere und dbo.WorkItemsLatest gespeichert. Die für Erstellt von (Created By) zuständige Spalte trägt den Namen Fld33_Normalized. Die in den Tabellen abgelegte Kennung für den Benutzer bezieht sich auf die Tabelle dbo.Constants und verweist dort auf den entsprechenden Eintrag in der Spalte ConstID.
Die Aktualisierung der Benutzerkennung für Erstellt von (Created By) lässt sich mit einer einfachen SQL-Abfrage erledigen:
UPDATE [Tfs_Collection].[dbo].[WorkItemsAre] SET [Fld33_Normalized] = 337 WHERE [Fld33_Normalized] = 2 UPDATE [Tfs_Collection].[dbo].[WorkItemsLatest] SET [Fld33_Normalized] = 337 WHERE [Fld33_Normalized] = 2 UPDATE [Tfs_Collection].[dbo].[WorkItemsWere] SET [Fld33_Normalized] = 337 WHERE [Fld33_Normalized] = 2
337 steht für die neue Kennung und 2 für die alte. Diese unterscheiden sich natürlich von Datenbank zu Datenbank. Der Datenbankname Tfs_Collection muss ebenfalls an das jeweilige System angepasst werden.
Bei dieser Gelegenheit kann man auch die Einträge von Geändert von (Changed By), Zugewiesen an (Assigned To), Aktiviert von (Activated By), Gelöst von (Resolved By) und Geschlossen von (Closed By) anpassen. Die entsprechenden Felder sind Fld9_Normalized, Fld24_Normalized, Fld10004Normalized, Fld10006_Normalized und Fld10009_Normalized. Das Feld PersonId scheint ebenfalls für die jeweilige Person zu stehen, dann auch hier wechselten die Kennungen mit dem Zeitpunkt der Umstellung. Damit wäre der der Identitätswechsel für die Arbeitsaufgaben schon erledigt. Sind mehrere Entwickler vorhanden, dann müssen die obigen Abläufe natürlich für jeden Entwickler durchgeführt werden.
Bleibt noch die Aktualisierung der Kennungen für die Quellcodeverwaltung und für die Bezeichnungen. Die entsprechenden Tabellen heißen dbo.tbl_ChangeSet und dbo.tbl_Label. Die hier verwendete Kennung unterscheiden sich aber von denen in den Arbeitsaufgaben, da sie einen kleinen Umweg über die dbo.tbl_Identity nimmt. Der Eintrag für den jeweiligen Benutzer in der Tabelle dbo.Contants enthält ein Feld TeamFoundationId, welches in dbo.tbl_Identity zur verwendeten Kennung in den beiden Tabellen führt. Die entsprechenden Anweisungen lauten:
UPDATE [Tfs_Collection].[dbo].[tbl_ChangeSet] SET [CommitterId] = 26 WHERE [CommitterId] = 1 UPDATE [Tfs_Collection].[dbo].[tbl_ChangeSet] SET [OwnerId] = 26 WHERE [OwnerId] = 1 UPDATE [Tfs_Collection].[dbo].[tbl_Label] SET [OwnerId] = 26 WHERE [OwnerId] = 1
Damit sind innerhalb der Quellcodeverwaltung und bei den Arbeitsaufgaben alle Verweise von SERVER-ALT\Sven auf Sven geändert. Zu möglichen Änderungen in anderen Bereichen (Reporting, Build-Server, SharePoint) kann ich leider nichts sagen, da diese bei mir nicht im Einsatz sind.
Abschließend sei natürlich noch erwähnt, dass Änderungen an der TFS-Datenbank an den Verwaltungswerkzeugen vorbei nicht ungefährlich sind und nur unter größten Vorsichtsmaßnahmen durchgeführt werden sollten. Ein vorheriges Backup der Datenbank ist Pflicht!
SpeedCommander 13.50
SpeedCommander 13.50 ist fertiggestellt und kann heruntergeladen werden. Die OpenSSL-Bibliothek wurde noch auf Version 1.0d aktualisiert, ansonsten gab es seit der Betaversion keine Änderungen mehr.
SpeedCommander 13.50.6365 (Beta)
Die Betaversion von SpeedCommander 13.50 steht zum Download bereit. Die Verbesserung beim Umgang mit gesperrten Dateien hatte ich kürzlich bereits beschrieben. Zudem hat FileSearch Felder für eine Angabe der Größeneinheit spendiert bekommen. Das sollte die Suche nach größeren Dateien einfacher gestalten.
Aufgrund der immer wieder berichteten Probleme beim Überschreiben von Dateien in den neueren Office-Formaten ist die Vorschaufunktion im ‚Datei überschreiben‘-Dialog jetzt für die Formate .docx, .xlsx und .xlsm standardmäßig deaktiviert. Diese Einschränkung hat aber keine sichtbaren Auswirkungen, da die Dateivorschau für diese Formate sowieso nichts lieferte.
Mit der Hilfe von Dietmar W. konnte ich nun auch endlich einen Absturz bei der Herstellung einer FTP-Verbindung beheben, der sich bei mir nicht reproduzieren ließ. Aus den eingeschickten Absturzberichten weiß ich aber, dass dieser auch bei einigen anderen Anwendern aufgetreten ist.
Gesperrte Dateien
Beim Löschen von gesperrten Dateien zeigt SpeedCommander an, welche Anwendung die Datei gerade verwendet. Das funktioniert aber nur, wenn diese Anwendung auch die IFileIsInUse-Schnittstelle verwendet. Ansonsten wird nur die Wiederholung der Operation ohne Nennung der Anwendung angeboten:
Nun habe ich eine Möglichkeit gefunden, wie sich der Name der Anwendung in solchen Fällen auch abseits von IFileIsInUse ermitteln lässt. Das schöne daran ist, dass man dafür keine angehobenen Rechte benötigt:
Läuft die andere Anwendung mit höheren Rechten als SpeedCommander, dann wird statt der Anwendungsbezeichnung der Name der ausgeführten Datei angezeigt:
Voraussetzung dafür ist Windows Vista oder höher.
SpeedCommander 13.40
Hinter dem ersten Türchen des Adventskalenders versteckt sich heute das Update auf SpeedCommander 13.40. Auf Wunsch einiger Anwender wurde die Kennzeichnung für eine Ausführung mit angehobenen Rechten von ‚^‘ auf ‚Administrator:‘ geändert, analog zur Kennzeichnung der Windows-Eingabeaufforderung. Zudem wurden seit der Betaversion noch kleine Probleme in FileSearch behoben, die bei einer Überarbeitung für die nächste Hauptversion zum Vorschein kamen.
SpeedCommander 13.40.6265 (Beta)
Im Forum steht die Betaversion von SpeedCommander 13.40 zum Download bereit. Neu ist die Kennzeichnung von Instanzen, die mit angehobenen Rechten gestartet wurden, durch ein vorangestelltes ^ im Fensternamen. Beim Kopieren und Löschen von Verzeichnissen wird nun geprüft, ob es sich um Verbindungspunkte handelt. Beim Löschen wird nur der Verbindungspunkt gelöscht, anstatt wie bisher der Inhalt des verlinkten Ordners. Beim Kopieren werden die besonderen nicht nachverfolgbaren Verbindungspunkte ohne Leserechte von Windows Vista/7 ohne Anzeige einer Fehlermeldung automatisch übersprungen.
SpeedCommander 13.40 merkt sich den Zustand der Option ‚Ohne Nachfrage überschreiben‘ bei Dateioperationen nun für die laufende Instanz. Bisher musste die Einstellung bei jeder Operation neu aktiviert werden. Das 7z-Modul wurde zudem auf die letzte offizielle Version 4.65 aktualisiert. Die finale Version wird Anfang Dezember erscheinen.
Office 2011 im MSDN verfügbar
Ich war schon etwas überrascht, als mir der Feed der MSDN-Downloads anzeigte, dass Office 2011 für den Mac zum Download bereitsteht:
Funkstille
Seit ein paar Wochen geht es hier im Blog etwas ruhiger zu. Ein Grund dafür sind die mittlerweile schon recht intensiven Entwicklungsarbeiten an der nächsten Hauptversion. Die Vorstellung der neuen Funktionen muss ich aber leider noch ein paar Monate zurückhalten, obwohl mir das gar nicht so leicht fällt. Im letzten Jahr hatte es sich gezeigt, dass hier auch der eine oder andere Mitbewerber gerne mal vorbeischaut.
Die vermutlich gleich im ersten Kommentar gestellte Frage beantworte ich schon einmal im voraus: Die erste öffentliche Betaversion ist für den nächsten Sommer geplant.
Promotion für Intel Parallel Studio 2011
Anfang September hat Intel das Parallel Studio 2011 veröffentlicht. Das Softwarepaket enthält den C++-Compiler, die Thread Building Blocks (TBB), die Intel Performance Primitives (IPP) und einige Tools, die das Schreiben und Debuggen von Multicore-Anwendungen erleichtern sollen. Der Preis für das gesamte Studio beträgt knapp 800 Euro, einzelne Komponenten sind für knapp 400 Euro erhältlich.
Wer schon eine Lizenz für den Intel C++-Compiler für Windows besitzt und mit dem Gedanken des Erwerbs spielt, der kann beim Kauf des Studios eine Menge Geld sparen. Bis zum 30. September 2010 erhält man das komplette Studio für 190 Euro.
SpeedCommander 13.30
Ab sofort könnt ihr euch die finale Version von SpeedCommander 13.30 herunterladen. Auf Vorschlag von widestone habe ich die Beschriftung für die Ordnerfenster auf den Registerkarten noch einmal erweitert. Nun können neben dem Laufwerksbuchstaben und dem Ordnernamen auch noch beide in Kombination angezeigt werden. Die entsprechende Option befindet sich im Einstellungsdialog auf der Seite Verhalten – Registerkarten. Die anderen Neuerungen hatte ich ja schon beim Erscheinen der Betaversion beschrieben.