TFS db中的哪个表包含TFS的团队名称数据?
我们正在开发TFS数据库(TFS_仓库、TFS_FabrikamFibreCollection),以创建一些与TFS活动相关的报告。我们需要根据团队名称生成报告。 维持TFS 项目的以下层次结构: 项目集合 项目 团队 我们能够在TFS_仓库数据库中映射项目集合和项目,它们位于DimTeamProject中。 但是ee无法在TFS_Warehouse/TFS_FabrikamFibreCollection数据库中映射团队名称。TFS db中的哪个表包含TFS的团队名称数据?,tfs,Tfs,我们正在开发TFS数据库(TFS_仓库、TFS_FabrikamFibreCollection),以创建一些与TFS活动相关的报告。我们需要根据团队名称生成报告。 维持TFS 项目的以下层次结构: 项目集合 项目 团队 我们能够在TFS_仓库数据库中映射项目集合和项目,它们位于DimTeamProject中。 但是ee无法在TFS_Warehouse/TFS_FabrikamFibreCollection数据库中映射团队名称。 如果您对DB表的团队名称映射有任何想法,请告诉我。我们不建议直接处理
如果您对DB表的团队名称映射有任何想法,请告诉我。我们不建议直接处理数据库。您可以改为创建Excel报告。通常,当我们创建一个团队时,我们将创建一个带有团队名称的区域路径。因此,您可以尝试在字段中选择区域路径:
我建议远离SQL,使用TFSAPI。下面的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
这是我为您的问题找到的最接近的解决方案:
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\u testeamprojectmapping]
表包含默认的安全组(读卡器、参与者、项目管理员等),但这些安全组可以很容易地从结果中筛选出来。您不应该针对TFS操作存储进行报告。唯一受支持的报告选项是Tfs\u仓库
数据库和分析多维数据集。是的,我只从Tfs\u仓库检索所有数据。但我无法在TFS_仓库中找到团队名称数据点。你能告诉我从哪里可以得到这个吗?同样的问题,你找到什么了吗?没有,我使用TFS Web API来查找团队名称。此外,你可以检查表[TFS_Warehouse].[dbo].[DimArea]中的区域路径。区域路径和团队名称以及单独的数据点。根据我的理解,一个团队可以有多个关联区域路径。甚至区域路径的名称也可能与团队名称不同。所以我不能使用区域路径作为团队名称