TFS 15 RC2 – User Stories verschwunden

Das Update lief mit Hilfe des Wizards problemlos durch.
Am nächsten Tag waren aber keine User Stories mehr im Backlog. Auf die Schnelle haben wir den Grund nicht gefunden und das Backup eingespielt. -> Problem gelöst (erstmal).

Nun waren am Tag darauf die User Stories wieder weg. Die Suche begann also von Neuem.
Einen Hinweis auf die gelöschten User Stories haben wir in der Tabelle „WorkItemsDestroyed“ des Teamprojektes gefunden.
Am ChangeDate haben wir gesehen, dass irgendetwas die Löschung ausgeführt hat, denn um 22:35:39.000 war niemand mehr im Büro.

Der TFS führt viele Jobs automatisiert aus.
Für TFS 15 RC 2 habe ich bisher leider keine Aufstellung gefunden, allerdings zeigt ein Blick in die Datenbank alle Jobs (siehe unten)

Diese Jobs werden vom „Visual Studio Team Foundation Background Job Agent“ Service (TfsJobAgent.exe) ausgeführt.
Das Logging des TfsJobAgent zu erhöhen hat uns auch nicht weiter gebraucht, da gleich einige Jobs los liefen.
In der TfsJobAgent.exe.config kann man einfach das Vorbereitet Logging wieder ein kommentieren. Das hat Microsoft ganz gut gemacht.
Leider hat dies auch nichts gebracht, da es viele Jobs gibt, jedoch keiner schrieb, dass er was löscht.

In der Teamprojekt Datenbank sind die Jobs in der Tabelle tbl_JobSchedule zu finden, die Definition ist unter tbl_JobDefinition zu finden. Über die ScheduledTime haben wir die JobId gefunden und dann in der tbl_JobDefinition gesehen was der Job wirklich macht.
Der Job Name ist „Work Item Tracking Administration (Daily)“ und führt eine Prozedur aus „EXEC dbo.RemoveUnusedContent @partitionId = %%PARTITIONID%%“

In der Prozedur gibt es folgende Stelle:

 SELECT *
 FROM WorkItemTypes WIT
 INNER JOIN Constants C
 ON C.PartitionId=WIT.PartitionId
 AND WIT.fDeleted=1
 AND C.ConstId = WIT.NameConstantID
 INNER JOIN tbl_ClassificationNode N
 ON N.PartitionId=WIT.PartitionId
 AND WIT.ProjectId=N.Id
 INNER JOIN tbl_WorkItemCoreLatest WIC
 ON WIC.PartitionId=WIT.PartitionId
 AND WIC.WorkItemType = C.DisplayPart
 AND WIC.DataspaceId = N.DataspaceId

Wir hatten im Ursprungstemplate Scrum TFS 2013 den Typ Namen „Produkt Backlog Item“ auf „User Story“ geändert.
Durch das Update wurde jetzt unsere umbenannte User Story als gelöscht makiert fDeleted=1 und ein neuer WorkItemType „User Story“ eingefügt.

Durch den INNER JOIN auf DisplayPart hat die RemoveUnusedContent Prozedur unsere User Story mit dem fDeleted=1 gefunden und alle unsere Stories gelöscht.

Die Lösung war NameConstantID unsere angepasst User Story zu ändern und das fDeleted auf 0 zu setzen.

update WorkItemTypes set NameConstantID = id12354, fDeleted = 0 
where WorkItemTypeID in (id1, id2) and fDeleted = 1;

Danach hat die Prozedur unsere eigene Story gefunden, aber nicht mehr gelöscht.

Microsoft war sehr hilfsbereit und hat auf unseren Post schnell geantwortet und uns weiter per Mail unterstützt

Team Foundation Server “15” RC 2 available

Am besten also nie was am Template ändern oder auf den RTM warten 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert