Поделиться через


Разрешение конфликтов схемы, возникающих в хранилище данных

Конфликты схем возникают, когда набор атрибутов включаемых в отчеты полей является различным в различных коллекциях командных проектов. При возникновении конфликта схемы поля, которые не конфликтуют друг с другом, обрабатываются как обычно, но конфликтующим полям присваивается значение NULL до тех пор, пока конфликты не будут разрешены, после чего поля будут обрабатываться как обычно. Кроме того, для каждого обнаруживаемого конфликта система создает событие уведомления. Подписавшись на такое событие, можно получать оповещения при возникновении конфликтов схемы для любых командных проектов, определенных для коллекции. Чтобы разблокировать обработку связанных данных для хранилища и обеспечить возможность отображения текущих данных в отчетах, необходимо устранить все конфликты схемы.

Все включаемые в отчеты данные из всех командных проектов, определенных во всех коллекциях проектов развертывания Visual Studio Team Foundation Server, записываются в одну реляционную базу данных. Данные из этого хранилища затем обрабатываются и записываются в куб. Сбор данных в едином хранилище позволяет создавать отчеты сразу по нескольким коллекциям командных проектов. Однако, поскольку работа с полями в каждой коллекции проектов происходит по-разному, при назначении разных определений одному или нескольким атрибутам поля, имеющего одно и то же отчетное ссылочное имя, могут возникать конфликты схемы.

Содержание раздела

  • Сообщения об ошибках, указывающие на конфликты схемы

  • Источники конфликтов схемы

  • Разрешение конфликтов схемы

  • Проверка разрешения конфликтов схемы

Сообщения об ошибках, указывающие на конфликты схемы

При возникновении конфликта схемы появляется сообщение об ошибке в следующих местах:

  • в журнале событий сервера уровня приложений;

    Примечание

    Team Foundation Server записывает сообщение об ошибке в журнале событий каждый день, пока конфликт данных не будет разрешен;

  • в отчете, входящем в состав шаблонов процессов MSF и просматриваемом через диспетчер отчетов;

  • на панели мониторинга, входящей в состав шаблонов процессов MSF и просматриваемой через портал проекта.

    Примечание

    Определить, когда шаблон или панель мониторинга обновлялись в последний раз, можно по метке времени Дата последнего обновления в нижнем правом углу каждого отчета и панели мониторинга.Метка времени указывает время последнего успешного завершения обработки каждого запланированного к выполнению задания адаптера хранилища для каждой коллекции проектов.При вычислении метки времени учитываются задания пользовательских адаптеров и игнорируются задания адаптеров, запуск которых блокируется веб-службой управления хранилищем.

    Если конфликт схемы блокирует попадание данных в хранилище данных для отчета, метка времени для отчета обновлена не будет.

Помимо перечисленных выше сообщений вы можете получить дополнительные сведения с помощью операции GetProcessingStatus веб-службы управления хранилищем. Подробнее см. в разделе Обработка хранилища данных и куба служб аналитики вручную для Team Foundation Server.

Источники конфликтов схемы

Конфликты схемы могут возникать, когда администратор проекта выполняет одно из следующих действий:

  • добавляет включаемое в отчеты поле в тип рабочего элемента в одной коллекции проектов, причем назначенные этому полю атрибуты не соответствуют его атрибутам в других коллекциях проектов;

  • изменяет назначенный полю рабочего элемента атрибут, который используется в нескольких коллекциях проектов, причем эти изменения конфликтуют с назначениями в других коллекциях.

    Примечание

    Избежать описанных выше ошибок администратор может только путем просмотра атрибутов, назначенных полям, которые определены в различных коллекциях проектов в развертывании.

Ошибки проявляются, когда поле имеет либо одинаковое ссылочное имя, либо одинаковое отчетное ссылочное имя в нескольких коллекциях проектов и один или несколько из следующих атрибутов для этого поля не совпадают в двух или более коллекциях:

  • name: понятное имя поля, отображаемое в качестве варианта при создании запроса рабочего элемента;

  • reportingname: имя, отображаемое в отчетах; если значение не задано, используется значение, присвоенное атрибуту name;

  • reportable/reportingtype: указывает, доступны ли данные из поля для включения в отчеты, и если да, указывает отчетный тип (например, None, Detail, Dimension или Measure);

    Примечание

    В элементе FIELD использовался атрибут reportable, а в команде witadmin changefield используется атрибут reportingtype.Эти атрибуты определяют одну и ту же информацию.

  • type: тип данных, принимаемый полем (например, Integer, HTML, String, Double или DateTime).

В таблице ниже приведены примеры назначений атрибутов, которые вызовут конфликты схемы. Отчетное ссылочное имя и отчетное имя в этих примерах не присвоены.

Атрибут

Коллекция проектов 1

Коллекция проектов 2

Конфликт схемы

Тип

Строка

Integer

Типы данных не совпадают.

ReportingName

Действие

Типовое действие

Отчетные имена не совпадают.

Для отчета

Подробно

Измерение

Отчетные типы не совпадают.

Разрешение конфликтов схемы

Для получения дополнительных сведений о поле, вызывающем конфликт схемы, можно просмотреть журнал событий на сервере уровня приложений. Определив, какое поле или поля вызывают конфликт, необходимо выполнить указанные ниже действия.

  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, однако, по умолчанию обрабатывается каждые два часа.

Примечание

Подробнее о веб-службе управления хранилищем см. в разделе Обработка хранилища данных и куба служб аналитики вручную для Team Foundation Server.

  1. Обработайте реляционное хранилище данных по запросу с помощью операции ProcessWarehouse службы WarehouseControlService.

  2. Обработайте куб по запросу с помощью операции ProcessAnalysisDatabase службы WarehouseControlService.

  3. Откройте панель мониторинга или диспетчер отчетов и проверьте, обновлены ли отчеты. Подробнее см. в разделе Панели мониторинга портала проекта или Отчеты (SQL Server Reporting Services).

Если сообщения об ошибках продолжают появляться, получить дополнительные сведения о конфликте данных и соответствующих блокируемых адаптерах можно, выполнив операцию GetProcessingStatus службы WarehouseControlService.

См. также

Ссылки

Управление полями рабочих элементов [witadmin]

Основные понятия

Добавление и изменение полей рабочих элементов для поддержки отчетов

Диаграммы, панели мониторинга и отчеты для Visual Studio ALM

Другие ресурсы

Обработка хранилища данных и куба служб аналитики вручную для Team Foundation Server