解决数据仓库中发生的架构冲突

当可报告字段的一组特性在团队项目集合之间有所不同时,将发生架构冲突。 在发生某个架构冲突时,与该架构关联的数据将无法移入数据仓库和 SQL Server Analysis Services 多维数据集中。 必须更正所有架构冲突,才能取消阻止处理仓库的相关数据,这样关联报表才能显示当前数据。

重要说明重要事项

您可以通过安装 Visual Studio Team Foundation Server 2010 Service Pack 1 (SP1),在发生架构冲突时取消阻止数据仓库。 安装 SP1 后,不存在冲突的字段将照常处理。 存在冲突的字段将被分配 Null 值,直到解决冲突,然后照常处理。

此外,系统会为检测到的每个冲突生成通知事件。 通过订阅事件,您现在可以在为集合定义的任何团队项目发生架构冲突时收到警报。

所有项目集合中针对 Visual Studio Team Foundation Server 的部署而定义的所有团队项目中的所有可报告数据都将写入单个关系数据仓库。 随后将对来自该仓库的数据进行处理,并将其写入多维数据集。 通过将数据收集到单个数据仓库,可以跨团队项目集合进行报告。 但是,由于每个项目集合管理字段的方式很明确,因此在向已分配相同报告引用名称的字段的一个或多个特性分配不同的定义时,会发生架构冲突。

主题内容

  • 提示您发生架构冲突的错误消息

  • 架构冲突源

  • 解决架构冲突

  • 验证是否已解决架构冲突

提示您发生架构冲突的错误消息

当发生架构冲突时,以下位置将出现一条错误消息:

  • 应用层服务器的事件日志。

    提示

    Team Foundation Server 每天都会将一条错误消息记录到事件日志中,直到解决数据冲突。

  • MSF 过程模板附带的可通过报表管理器查看的报表。

  • MSF 过程模板附带的可通过项目门户查看的面板。

    提示

    如果您找到显示在每个报表和面板右下角的“上次更新日期”时间戳,便可确定报表或面板的最近更新日期。 该时间戳对应于为每个项目集合计划完成的每个仓库适配器作业成功完成处理的最近时间。 时间戳计算包括自定义适配器作业,并将忽略无法运行仓库控制 Web 服务的适配器作业。

    如果架构冲突导致无法为报表将数据输入数据仓库,则将不会更新该报表的时间戳。

除前面的消息外,您还可以使用仓库控制 Web 服务的 GetProcessingStatus 操作获取更多信息。 有关更多信息,请参见为 Team Foundation Server 手动处理数据仓库和 Analysis Services 多维数据集

架构冲突源

当项目管理员执行下列操作之一时,将发生架构冲突:

  • 向项目集合中的某个工作项类型添加一个可报告字段,并且分配给该字段的特性与其他项目集合中的特性不匹配。

  • 更改分配给多个项目集合中使用的工作项字段的特性,即使这些更改与其他集合中的赋值发生冲突。

    提示

    项目管理员只能通过查看在部署中的多个项目集合中定义的字段特性分配,才能避免上一个列表中的错误。

如果某个字段在多个项目集合中具有相同的引用名称或相同的报告引用名称,并且该字段的一个或多个以下特性在两个或两个以上的集合中不匹配,则会产生错误:

  • name:字段的友好名称,该名称会在您创建工作项查询时显示为选项。

  • reportingname:出现在报表中的名称。 如果您未指定值,则将使用分配给 name 特性的值。

  • reportable/reportingtype:字段中的数据是否对报表中的包含可用,如果可用,则为可报告类型(例如 NoneDetailDimensionMeasure)。

    提示

    FIELD 元素使用 reportable 特性,而 witadmin changefield 命令使用 reportingtype 特性。 这些特性定义了相同的信息。

  • type:字段接受的数据的类型(例如,IntegerHTMLStringDoubleDateTime)。

下表提供了将引发架构冲突的特性分配的示例。 在这些示例中,未分配报告引用名称和报告名称。

特性

项目集合 1

项目集合 2

架构冲突

Type

String

Integer

数据类型不匹配。

ReportingName

Activity

Common Activity

报告名称不匹配。

Reportable

Detail

Dimension

报告类型不匹配。

解决架构冲突

您可在应用层服务器上查看事件日志,获取有关导致架构冲突的字段的更多信息。 确定导致冲突的一个或多个字段后,您必须按照以下步骤操作:

  1. 查看分配给所有项目集合中的该字段的特性。 可以使用 witadmin listfields 命令,该命令具有以下语法:

    witadmin listfields /collection:CollectionURL /n:RefName [/unused]
    

    有关更多信息,请参见管理工作项字段 [witadmin]

  2. 确定您要使用以下哪种方法来解决冲突:

    • 更改一个项目集合中的字段特性以与其他项目集合中进行的分配相匹配。 当团队在类似报表中用相同的方式使用字段,或对跨项目报告使用此字段时,您应执行此操作。

    • 重新标记发生冲突的字段的报告引用名称。 当以不同方式使用字段或您必须保留一个不同的字段时,您应执行此操作。 在此情况下,使用其他项目集合的团队不会使用此字段来进行跨项目报告。

      有关更多信息,请参见添加和修改工作项字段以支持报告

    • 为一个或多个集合将字段标记为不可报告字段。 当字段未用于与这些项目集合相关的报表时,您应执行此操作。

    • 从团队项目集合中删除字段。 如果字段未供任何团队项目或报表使用,则应执行此操作。

      提示

      如果您删除某个报表中使用的字段,则将不再正常显示该报表。

  3. 基于您在上一个步骤中所做的决策,更改分配给字段的特性。 可以使用 witadmin changefield 命令,该命令具有以下语法:

    witadmin changefield /collection:CollectionURL /n:RefName [/name:NewName] [/syncnamechanges:true | false] [/reportingname:ReportingName] [/reportingrefname:ReportingRefName] [/reportingtype:Type] [/reportingformula:Formula] [/noprompt]
    
  4. 若要从项目集合中删除某个字段,您可以使用 witadmin deletefield 命令,该命令具有以下语法:

    witadmin deletefield /collection:CollectionURL /n:RefName
    
    重要说明重要事项

    如果您永久删除某个字段,则会从数据存储中删除该字段及其存储的所有数据。

验证是否已解决架构冲突

可以通过按需处理数据仓库,然后检查报表以确定是否已更新这些报表,来验证是否已解决架构冲突。 或者,您可以根据仓库适配器作业的默认安排等待,直到这些作业运行。 默认情况下,每隔几分钟处理一次关系数据库。 而默认情况下,每隔两小时处理一次 Analysis Services 多维数据集。

提示

有关仓库控制 Web 服务的更多信息,请参见为 Team Foundation Server 手动处理数据仓库和 Analysis Services 多维数据集

  1. 通过使用 WarehouseControlServiceProcessWarehouse 操作按需处理关系数据仓库。

  2. 通过使用 WarehouseControlServiceProcessAnalysisDatabase 操作按需处理多维数据集。

  3. 打开面板或报表管理器,并验证是否已更新报表。 有关更多信息,请参见面板(敏捷)报表 (Agile)

如果错误消息仍出现,则可通过运行 WarehouseControlServiceGetProcessingStatus 操作来获取有关数据冲突和受影响的受阻适配器的更多信息。

请参见

参考

管理工作项字段 [witadmin]

概念

为 Visual Studio ALM 创建、自定义和管理报表

其他资源

添加和修改工作项字段以支持报告

为 Team Foundation Server 手动处理数据仓库和 Analysis Services 多维数据集