【问题标题】:SQL for Retrieving all users and default team from CRM 2013用于从 CRM 2013 中检索所有用户和默认团队的 SQL
【发布时间】:2023-03-23 00:40:01
【问题描述】:

我需要能够检索所有用户以及他们所属业务部门的默认团队。

除了用于团队和 BU 的相同名称之外,我如何识别业务部门的默认团队。是否有将其标识为默认团队的标志?

我需要的输出是以下列

  • 域名
  • 团队名称 + 团队名称的 GUID(默认团队的 所属BU)。

这是我的查询。

SELECT dbo_SystemUser.DomainName, (dbo_Team.Name + ' ' + dbo_Team.TeamId)
FROM (dbo_Team INNER JOIN (dbo_TeamMembership INNER JOIN dbo_SystemUser ON dbo_TeamMembership.SystemUserId = dbo_SystemUser.SystemUserId) ON dbo_Team.TeamId = dbo_TeamMembership.TeamId) INNER JOIN dbo_BusinessUnit ON dbo_Team.BusinessUnitId = dbo_BusinessUnit.BusinessUnitId
WHERE dbo_Team.Name = dbo_BusinessUnit.Name

【问题讨论】:

    标签: sql-server dynamics-crm-2013


    【解决方案1】:

    Team 表有 IsDefault 列,即 TRUE 用于 BU 的默认团队。

    它也包含在FilteredTeam 视图中。

    解决 OP 问题的查询:

    -- Pay attention to the FROMs, tables ignore Security Roles.
    -- To respect security, query the filtered views
    -- (FilteredSystemUser, FilteredTeam, FilteredTeamMembership)
    -- On the other hand, querying tables is much faster
    
    SELECT U.DomainName as [Domain Name], T.Name as [Team Name], T.TeamId as [Team ID]
    FROM SystemUser U 
        INNER JOIN TeamMembership TM ON U.SystemUserId = TM.SystemUserId
        INNER JOIN Team T ON TM.TeamId = T.TeamId
    WHERE T.IsDefault = 1
    

    【讨论】:

      【解决方案2】:

      应该这样做。

      SELECT FilteredSystemUser.domainname, FilteredTeam.name, FilteredTeam.teamid
      FROM FilteredSystemUser
          INNER JOIN FilteredBusinessUnit ON FilteredSystemUser.businessunitid = FilteredBusinessUnit.businessunitid
          INNER JOIN FilteredTeam ON FilteredTeam.businessunitid = FilteredBusinessUnit.businessunitid
              WHERE FilteredTeam.isdefault = 1
      

      您还需要使用Filtered Views.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多