Résoudre les conflits de schéma qui se produisent dans l'entrepôt de données
Des conflits de schéma se produisent lorsqu'un ensemble d'attributs pour les champs signalables diffère à travers des collections de projets d'équipe. Lorsqu'un conflit de génération de schéma se produit, les champs qui ne sont pas en conflit sont traités comme d'habitude mais les champs qui sont en conflit sont attribués à des valeurs NULL jusqu'à ce que vous dépannez les conflits puis les traiter comme à l'accoutumée. De plus, le système génère un événement de notification pour chaque conflit qu'il détecte. En s'abonnant à l'événement, vous pouvez maintenant recevoir des alertes lorsque les conflits de schéma se produisent pour un projet d'équipe défini pour une collection. Vous devez corriger tous les conflits de schéma pour débloquer le traitement des données associées pour l'entrepôt et permettre aux rapports associés d'afficher des données actuelles.
Toutes les données signalables issues de tous les projets d'équipe définis dans toutes les collections de projets relatives à un déploiement de Visual Studio Team Foundation Server sont écrites dans un seul et même entrepôt de données relationnelles. Les données de cet entrepôt sont ensuite traitées et écrites vers le cube. La collecte de données dans un seul et même entrepôt de données prend en charge la création de rapports entre collections de projets d'équipe. Toutefois, étant donné que les champs sont gérés distinctement pour chaque collection de projets, des conflits de schéma peuvent se produire lorsque différentes définitions sont assignées à un ou plusieurs attributs d'un champ auquel le même nom de référence de création de rapports a été assigné.
Dans cette rubrique
Messages d'erreur qui vous alertent des conflits de schéma
Sources de conflits de schéma
Résoudre des conflits de schéma
Vérifier que des conflits de schéma sont résolus
Messages d'erreur qui vous alertent des conflits de schéma
Lorsqu'un conflit de schéma se produit, un message d'erreur s'affiche dans les emplacements suivants :
Le journal des événements du serveur de couche Application.
Notes
Team Foundation Server enregistre chaque jour un message d'erreur vers le journal des événements jusqu'à ce que le conflit de données soit résolu.
Un rapport fourni avec les modèles de processus MSF et que vous affichez via le Gestionnaire de rapports.
Un tableau de bord fourni avec les modèles de processus MSF et que vous affichez via le portail du projet.
Notes
Vous pouvez déterminer de quand date la dernière mise à jour d'un rapport ou tableau de bord en accédant à l'horodatage Date de la dernière mise à jour, qui s'affiche dans l'angle inférieur droit de chaque rapport et tableau de bord.L'horodatage correspond au moment le plus récent auquel chaque travail de l'adaptateur d'entrepôt planifié, pour chaque collection de projets, s'est achevé avec succès.Le calcul d'horodatage inclut les travaux de l'adaptateur personnalisés et ignore les travaux de l'adaptateur dont l'exécution est bloquée par le service Web de contrôle d'entrepôt.
Si un conflit de schéma empêche l'entrée de certaines données dans l'entrepôt de données pour un rapport, l'horodatage du rapport ne sera pas mis à jour.
En plus des messages précédents, vous pouvez obtenir davantage d'informations en utilisant l'opération GetProcessingStatus du service Web de contrôle d'entrepôt. Pour plus d'informations sur ff400237(v=vs.120).md.
Sources de conflits de schéma
Les conflits de schéma se produisent lorsqu'un administrateur de projet exécute l'une des actions suivantes :
Il ajoute un champ signalable à un type d'élément de travail d'une collection de projets, et les attributs assignés à ce champ ne correspondent pas à ceux d'autres collections de projets.
Il modifie un attribut assigné à un champ d'élément de travail utilisé dans plusieurs collections de projets, bien que ces modifications soient en conflit avec les assignations d'autres collections.
Notes
Un administrateur de projet peut éviter les erreurs de la liste précédente uniquement en examinant les assignations d'attributs pour les champs définis à travers plusieurs collections de projets dans un déploiement.
Des erreurs surviennent lorsqu'un champ a le même nom de référence ou le même nom de référence de création de rapports dans plusieurs collections de projets et lorsqu'un ou plusieurs des attributs suivants pour ce champ ne correspondent pas dans deux collections ou plus :
name : nom convivial du champ, qui s'affiche comme option lorsque vous créez une requête d'élément de travail.
reportingname : nom qui apparaît dans les rapports. Si vous ne spécifiez pas de valeur, la valeur assignée à l'attribut name est utilisée.
reportable/reportingtype : détermine si les données du champ sont disponibles pour être incluses dans les rapports, et le cas échéant, le type signalable (par exemple, None, Detail, Dimension ou Measure).
Notes
L'élément FIELD utilisait l'attribut reportable, et la commande witadmin changefield utilise l'attribut reportingtype.Ces attributs définissent les mêmes informations.
type : type des données que le champ accepte (par exemple, Integer, HTML, String, Double ou DateTime).
Le tableau suivant fournit des exemples d'assignations d'attributs qui provoqueront des conflits de schéma. Dans ces exemples, le nom de référence de création de rapports et le nom de création de rapports ne sont pas assignés.
Attribut |
Collection de projets 1 |
Collection de projets 2 |
Conflit de schéma |
---|---|---|---|
Type |
String |
Integer |
Les types de données ne correspondent pas. |
ReportingName |
Activité |
Activité commune |
Les noms de création de rapports ne correspondent pas. |
Signalable |
Détail |
Dimension |
Les types de création de rapports ne correspondent pas. |
Résoudre des conflits de schéma
Vous pouvez examiner le journal des événements sur le serveur de couche Application pour obtenir plus d'informations sur le champ qui provoque un conflit de schéma. Après avoir déterminé quel(s) champ(s) provoque(nt) le conflit, vous devez suivre ces étapes :
Examinez les attributs assignés au champ dans toutes les collections de projets. Vous pouvez utiliser la commande witadmin listfields, qui a la syntaxe suivante :
witadmin listfields /collection:CollectionURL /n:RefName [/unused]
Pour plus d'informations, consultez Gérer des champs d'éléments de travail (witadmin).
Déterminez de quelle façon vous souhaitez résoudre le conflit :
Modifier l'attribut pour le champ dans une collection de projets pour établir la correspondance aux assignations faites dans d'autres collections de projets. Vous devez prendre cette mesure lorsque les équipes utilisent le champ des mêmes façons dans des rapports semblables ou pour la création de rapports interprojets.
Recréer une étiquette pour le nom de référence de création de rapports du champ conflictuel. Vous devez prendre cette mesure lorsque les champs sont utilisés de différentes façons ou vous devez gérer un champ différent. Dans ce cas, le champ n'est pas utilisé par les équipes qui travaillent dans des collections de projets différentes pour la création de rapports interprojets.
Pour plus d'informations, consultez Ajouter et modifier des champs d'éléments de travail pour prendre en charge la création de rapports.
Marquer un champ comme non signalable pour une ou plusieurs collections. Vous devez prendre cette mesure lorsque le champ n'est pas utilisé pour les rapports concernant ces collections de projets.
Supprimer le champ de la collection de projets d'équipe. Vous devez prendre cette mesure si le champ n'est utilisé par aucun projet d'équipe ou rapport.
Notes
Si vous supprimez un champ utilisé dans un rapport, le rapport ne s'affichera plus correctement.
Modifier l'attribut assigné à un champ, selon les décisions que vous avez prises à l'étape précédente. Vous pouvez utiliser la commande witadmin changefield, qui a la syntaxe suivante :
witadmin changefield /collection:CollectionURL /n:RefName [/name:NewName] [/syncnamechanges:true | false] [/reportingname:ReportingName] [/reportingrefname:ReportingRefName] [/reportingtype:Type] [/reportingformula:Formula] [/noprompt]
Pour supprimer un champ d'une collection de projets, vous pouvez utiliser la commande witadmin deletefield, qui a la syntaxe suivante :
witadmin deletefield /collection:CollectionURL /n:RefName
Important
Si vous supprimez un champ définitivement, vous supprimez le champ et toutes les données qu'il stocke du stockage des données.
Vérifier que des conflits de schéma sont résolus
Vous pouvez vérifier que les conflits de schéma ont été résolus en traitant les entrepôts de données à la demande, puis en vérifiant si les rapports ont été mis à jour. Sinon, vous pouvez attendre l'exécution des travaux de l'adaptateur d'entrepôt, d'après leur planification par défaut. Par défaut, la base de données relationnelle est traitée à quelques minutes d'intervalle. En revanche, le cube Analysis Services est traité toutes les deux heures par défaut.
Notes
Pour plus d'informations sur le service Web de contrôle d'entrepôt, consultez Traitement manuel de l'entrepôt de données et du cube Analysis Services de TFS.
Traitez l'entrepôt de données relationnelles à la demande à l'aide de l'opération ProcessWarehouse du WarehouseControlService.
Traitez le cube à la demande à l'aide de l'opération ProcessAnalysisDatabase du WarehouseControlService.
Ouvrez un tableau de bord ou Gestionnaire de rapports et vérifiez que les rapports sont mis à jour. Pour plus d'informations, consultez Tableaux de bord (Agile) ou Rapports (Agile).
Si des messages d'erreur continuent d'apparaître, vous pouvez obtenir plus d'informations sur les conflits de données et les adaptateurs bloqués affectés en exécutant l'opération GetProcessingStatus du WarehouseControlService.
Voir aussi
Référence
Gérer des champs d'éléments de travail (witadmin)
Concepts
Ajouter et modifier des champs d'éléments de travail pour prendre en charge la création de rapports
Créer, personnaliser et gérer des rapports pour Visual Studio ALM
Autres ressources
Traitement manuel de l'entrepôt de données et du cube Analysis Services de TFS