【问题标题】:TFS2015 - List all user and shared queries with their ownersTFS2015 - 列出所有用户和与其所有者共享的查询
【发布时间】:2023-03-26 05:17:01
【问题描述】:

我正在尝试从 TFS2015 数据库中列出所有用户拥有和共享的查询及其所有者,但我找不到用户拥有的查询的所有者,它始终显示为空。我在 SO 上找到了一个类似的主题 returns shared queries,但是当将其应用于用户拥有的查询时,它不会返回任何所有者。 我浏览了 QueryItems 表中的记录,但找不到任何指向查询所有者的字段。 这是我目前使用的 SQL 查询:

   SELECT qi.Name as 'Query Name'
         ,c.DisplayPart as 'Query Owner',
          [fPublic],
          [fFolder],
          [fDeleted]
     FROM [Tfs_Development].[dbo].[QueryItems] qi
LEFT JOIN [Tfs_Development].[dbo].[Constants] c ON c.TeamFoundationId=qi.OwnerIdentifier
    WHERE fPublic=0 AND fFolder=1 And fDeleted=0

如果有办法使用 REST API 做到这一点,那也会很有帮助。

【问题讨论】:

    标签: sql sql-server tfs tfs-2015


    【解决方案1】:

    共享查询的键应该是WHERE fPublic=1 AND fFolder=0 And fDeleted=0

    所以,试试下面的 sql 查询(它适用于我):

    SELECT   qi.Name as 'Query Name',
             c.DisplayPart as 'Query Owner',
              [fPublic],
              [fFolder],
              [fDeleted]
         FROM [TFS_DefaultCollection].[dbo].[QueryItems] qi
         LEFT JOIN [TFS_DefaultCollection].[dbo].[Constants] c ON c.TeamFoundationId=qi.OwnerIdentifier
         WHERE fPublic=1 AND fFolder=0 And fDeleted=0
    

    当然你也可以使用REST API来检索信息:

    GET http://server:8080/tfs/DefaultCollection/{ProjectName}/_apis/wit/queries/Shared Queries?api-version=1.0&$depth=2
    

    更新:

    按键说明:

    fPublic=1 用于共享查询,fPublic=0 用于私人查询;

    fFolder=0表示检索到的记录不是文件夹,fFolder=1表示记录是文件夹(您可以创建文件夹对查询进行分组)

    fDeleted=0表示查询正常使用,fDeleted=1表示查询已删除。

    【讨论】:

    • 您好,谢谢您的回答,但是私人查询没有解决。我想我自己通过添加: LEFT JOIN [Tfs_Development].[dbo].[Constants] cP ON cP.ConstID = qi.ConstID 现在在共享查询中,我通过 TeamFoundationId 获得了所有者,并且 ConstID 返回“未知域帐户”和私人查询 TeamFoundationId 返回 null,但 ConstID 返回用户,因此每个场景似乎都以一种或另一种方式覆盖。我希望我的解释是正确的,因为这对我来说有点奇怪,识别所有者的不是一个而是两个字段。
    • @W.Siegmund 对于私有查询,密钥应该是fPublic=0,您需要先了解密钥的含义。
    • 是的,我检查了它(在所有情况下都假设 fDeleted=0): fPublic=0 AND fFolder=0 -> 私人查询 fPublic=0 AND fFolder=1 -> 私人查询文件夹 fPublic=1 AND fFolder=0 -> 共享查询 fPublic=1 AND fFolder=1 -> 用于共享查询的文件夹(我的服务器上只有 1 个实例)如果我错了,请纠正我。如果我是对的,我将粘贴我的解决方案并在解决后关闭此主题。
    • @W.Siegmund 是的,这是正确的,只需查看我更新的答案即可了解键的解释。
    • 在 c.ConstId=qi.ConstId 上加入 Constants 似乎更好
    猜你喜欢
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2010-12-10
    相关资源
    最近更新 更多