【问题标题】:Which table in TFS db has Team Name data of TFS?TFS db 中哪个表有 TFS 的 Team Name 数据?
【发布时间】:2017-04-09 15:41:08
【问题描述】:

我们正在开发 TFS 数据库(TFS_Warehouse、TFS_FabrikamFibreCollection)以创建一些与 TFS 活动相关的报告。我们需要根据团队名称生成报告。 维护 TFS 项目的以下层次结构: 项目集合 项目 团队

我们能够在 TFS_Warehouse 数据库中映射 ProjectCollections 和 Projects,它们位于 DimTeamProject 中。 但 ee 无法在 TFS_Warehouse / TFS_FabrikamFibreCollection 数据库中映射团队名称。 如果您对使用数据库表的团队名称映射有任何想法,请告诉我。

【问题讨论】:

  • 不应针对 TFS 运营存储进行报告。唯一受支持的报告选项是 Tfs_Warehouse 数据库和分析多维数据集。
  • 是的,我只从 TFS_WareHouse 检索所有数据。但我无法在 TFS_WareHouse 中找到团队名称数据点。你能建议我在哪里可以买到吗?
  • 同样的问题,你找到什么了吗?
  • 不,我使用 TFS Web API 来查找团队名称

标签: tfs


【解决方案1】:

这是我为您的问题找到的最接近的解决方案:

SELECT map.[TeamId]
      ,map.[ProjectId]
      ,proj.[ProjectNodeName] AS [Team Project Name]
      ,ado.[SamAccountName] AS [Team Name]
  FROM [Tfs_FabrikamFibreCollection].[dbo].[tbl_TempTeamProjectMapping] map
  JOIN [Tfs_Warehouse].[dbo].[DimTeamProject] proj ON map.[ProjectId] = proj.[ProjectNodeGUID]
  JOIN [Tfs_FabrikamFibreCollection].[dbo].[ADObjects] ado ON map.[TeamId] = ado.[TeamFoundationId]

由于某种原因,[tbl_TempTeamProjectMapping] 表包含默认安全组(读者、贡献者、项目管理员等),但这些很容易从结果中过滤掉。

【讨论】:

    【解决方案2】:

    我们不建议直接处理数据库。您可以改为创建 Excel 报告。通常,当我们创建一个团队时,我们会创建一个带有团队名称的区域路径。所以你可以尝试在字段中选择Area Path:

    【讨论】:

    • 另外,您可以查看表 [Tfs_Warehouse].[dbo].[DimArea] 中的区域路径。
    • 区域路径和团队名称以及单独的数据点。根据我的理解,一个团队可以拥有多个关联区域路径。甚至区域路径的名称也可能与团队名称不同。所以我不能使用区域路径作为团队名称
    【解决方案3】:

    我建议远离 SQL 并使用 TFS API。以下 PowerShell 调用 TFS 客户端命名空间并带回集合和项目。

    #region Get-TfsSummary 
    function Get-TfsSummary{
    param(
        [parameter(Position=0,HelpMessage='    Full server name. e.g. tfsServer.domain.net',Mandatory)]
        [string]
        $serverFQDN, # eg 'tfsServer.domain.net'
    
        [parameter(Position=1,HelpMessage='    port used to access the TFS server e.g. 8080')]
        [string]
        $serverPort, # eg '8080'
    
        [parameter(Position=2,HelpMessage='    The root virtual directory for TFS. Default is tfs e.g. tfs ')]
        [string]
        $tfsRootNode # eg 'tfs'
    )
    Add-Type -AssemblyName "Microsoft.TeamFoundation.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    $tfsUri = 'http://' + $serverFQDN + ':' + $serverPort +'/' + $tfsRootNode + '/'
    $tfsConfigurationServer = [Microsoft.TeamFoundation.Client.TfsConfigurationServerFactory]::GetConfigurationServer($tfsUri)
    $tpcService = $tfsConfigurationServer.GetService("Microsoft.TeamFoundation.Framework.Client.ITeamProjectCollectionService")
    $sortedCollections = $tpcService.GetCollections() | Sort-Object -Property Name
    $numberOfProjects = 0
    $numberOfStoppedCollections = 0
    $numberOfStartedProjects = 0
    $numberOfStoppedProjects = 0
    $isStopped = ''
    
    foreach($collection in $sortedCollections) {
      $collectionUri = $tfsUri + "/" + $collection.Name
      $tfsTeamProject = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($collectionUri)
    
      try {
        $cssService = $tfsTeamProject.GetService("Microsoft.TeamFoundation.Server.ICommonStructureService4")
    
      }catch{}
        $sortedProjects = $cssService.ListProjects() | Sort-Object -Property Name
    
      if($collection.State -eq 'Stopped'){
        $isStopped = ' but is stopped'
        $numberOfStoppedCollections++
        $numberOfStoppedProjects += $sortedProjects.Count
      }
    
    
      Write-Host "`n" $collection.Name "(" $collection.Id ")- contains" $sortedProjects.Count "project(s)$isStopped"
      $isStopped = ''
    
      foreach($project in $sortedProjects)
      {
        $numberOfProjects++
        Write-Host (" - " + $project.Name + " (" + $project.Uri +  ")")
      }
    
    }
    
    $numberOfStartedProjects =  $numberOfProjects - $numberOfStoppedProjects
    Write-Host
    Write-Host "Number of stopped collections          " $numberOfStoppedCollections
    Write-Host "Total number of project collections    " $sortedCollections.Count
    Write-Host "Online projects                        " $numberOfStartedProjects
    Write-Host "Total number of projects               " $numberOfProjects
    }
    #endregion Get-TfsSummary
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-07
      • 2011-11-27
      • 1970-01-01
      • 2015-01-16
      • 2011-05-30
      • 1970-01-01
      • 2012-02-15
      • 2012-07-10
      相关资源
      最近更新 更多