2016-04-20 3 views
1

Ich schreibe einige benutzerdefinierte SSRS-Berichte für unsere QA-Teams und ich muss Testfall "Tags" zu meiner Abfrage hinzufügen. Es ist mein Verständnis, dass diese nicht im TFS_Warehouse sind. Ich habe dbo.tbl_TagDefinition im Betriebsspeicher gefunden, kann aber nicht herausfinden, wie ich es zu einem Arbeitselement hinzufügen kann.Wie kann ich Tags aus der TFS-Datenbank abfragen?

+0

Welche Ausgabe von TFS und VS verwenden Sie? –

+0

Sie sollten das operative Geschäft nicht ** direkt abfragen. –

+0

Ich bin so beunruhigt über die Menge der Leute, die sagen, wie man das operative Geschäft nicht direkt abfragen sollte. Wir sprechen hier von einer MS SQL Server-Instanz auf Produktionsebene, nicht von einer schnellen DB, die aus Pappmaché zusammengewürfelt wird. Sind wir nicht Programmierer und Technologen? Wenn wir einen Weg finden, etwas zu tun, tun wir es. Was ist das Risiko, den Laden direkt abzufragen? 1. Geringfügige Auswirkungen auf die Leistung (für eine Produktions-DB, die damit umgehen kann) 2. Die DB könnte zwischen den Versionen wechseln. Fein. Damit können wir umgehen. Wenn es sich ändert (was zwischen 2015 und 2017 nicht der Fall war), werden wir eine andere Lösung entwickeln. –

Antwort

3

Sie können der Arbeitsaufgabenabfrage direkt ein Tag hinzufügen, wenn Ihr TFS die Aktualisierungen enthält, die mit TFS 2013 Update 2 oder höher hinzugefügt wurden.

Wenn Sie aus der Datenbank abfragen möchten, überprüfen this case:

SELECT DISTINCT WorkItemsAre.ID, WorkItemsAre.Title, tbl_TagDefinition.Name 
    --,tbl_PropertyValue.ArtifactId, * 
FROM tbl_TagDefinition 
    LEFT JOIN tbl_PropertyDefinition ON tbl_PropertyDefinition.Name = 'Microsoft.TeamFoundation.Tagging.TagDefinition.' + CONVERT(NVARCHAR(400), tbl_TagDefinition.TagId) 
    LEFT JOIN tbl_PropertyValue ON tbl_PropertyValue.PropertyId = tbl_PropertyDefinition.PropertyId 
    --LEFT JOIN WorkItemLongTexts ON WorkItemLongTexts.ID = tbl_PropertyValue.ArtifactId 
    left join WorkItemsAre on WorkItemsAre.ID = tbl_PropertyValue.ArtifactId 
WHERE 
    (
     SELECT SUM(CASE WHEN IntValue = 0 THEN 1 ELSE -1 END) NB 
     FROM tbl_PropertyValue PROP_CNT 
     WHERE PROP_CNT.PropertyId = tbl_PropertyDefinition.PropertyId 
      AND WorkItemsAre.ID = PROP_CNT.ArtifactId 
    ) > 0 
+3

Ist dies eine offizielle Microsoft-Empfehlung? Mir wurde immer gesagt, dass das Schreiben von Abfragen gegen den operativen Laden ** nicht unterstützt wird und nicht durchgeführt werden sollte. –

+0

Die offizielle Empfehlung lautet, niemals den Betriebsladen abzufragen. In der Realität gibt es einige Fälle, in denen die API oder Warehouse-Adapter nicht sehr attraktiv sind. Wir stießen auf dasselbe Dilemma mit der Abfrage von Testfallschritten und ich sah einige inoffizielle Empfehlungen, um das operative Geschäft abzufragen und auf mögliche Brüche beim Upgrade vorbereitet zu sein. –

+0

Danke @Cece! Ich ging, um dies zu implementieren und entdeckte, dass wir letzte Woche auf TFS2015 aktualisiert und jetzt dbo.workitemsare ist weg. [Ich habe eine neue Frage unter TFS2015 gestellt] (http://stackoverflow.com/questions/36778832/reporting-tfs-2015-tag-data-in-custom-ssrs-reports) –

2

Die TFS 2015 db ist verworren, aber hier ist, wie Sie für einen Tag Abfrage alle es passende Workitems finden

select * from tbl_WorkItemCoreLatest 
where 
    id in 
    (
     select CONVERT(INT, artifactid) from tbl_PropertyValue 
     where 
     PropertyId in 
      (
       select PropertyId from tbl_PropertyDefinition 
       where 
       name in 
        (
         select ltrim(rtrim('Microsoft.TeamFoundation.Tagging.TagDefinition.' + cast(tagid as varchar(1000)))) 
          from tbl_TagDefinition 
           where name like '%<TAG NAME TO SEARCH FOR>%' -- Tag name you're looking for 
        ) 
      ) 
    ) 

hoffe, das hilft :-)

TFS # TFS2015

-R