KB2932340 - CORRECTIF : Erreurs lors de l’ajout d’un membre dans SQL Server 2012 ou SQL Server 2014 MDS

S’applique à
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Symptômes

Prenons le scénario suivant :

  • Vous avez installé Master Data Services (MDS) pour Microsoft SQL Server 2012 ou SQL Server 2014.
  • Vous créez une entité qui compte 100 membres et dont l’option « Créer automatiquement des valeurs de code » est activée.
  • Dans MDS Explorer, l’entité comporte deux pages de membres, le nombre de membres en page 2 étant égal à la taille de la page de la grille (la valeur par défaut est 50).

Scénario 1 :
Cliquez sur le bouton Ajouter un membre sur la page 1, entrez les données requises pour ajouter le nouveau membre, puis cliquez sur le bouton Page suivante . La page 3 est créée et les erreurs suivantes s’affichent :

Remarque

System.ArgumentOutOfRangeException : [ArgumentOutOfRange_Index]
Arguments :
Les chaînes de ressource de débogage ne sont pas disponibles. Souvent, la clé et les arguments fournissent des informations suffisantes pour diagnostiquer le problème. Voir http://go.microsoft.com/fwlink/?linkid=106663&Version=5.1.20913.00&File=mscorlib.dll&Key=ArgumentOutOfRange_Index
Nom du paramètre : index
   dans System.ThrowHelper.ThrowArgumentOutOfRangeException()
   dans System.Collections.Generic.List'1.get_Item(index Int32)
   dans System.Collections.ObjectModel.Collection'1.get_Item(index Int32)
   dans Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.GetEnumerator()
   à System.Windows.Controls.DataForm.get_ItemsCount()
   dans System.Windows.Controls.DataForm.SetCanMoveToLastItem()
   dans System.Windows.Controls.DataForm.SetAllCanProperties()
   dans System.Windows.Controls.DataForm.SetIsItemValid()
   dans System.Windows.Controls.DataForm.GenerateUI(Boolean clearEntityErrors, Boolean swapOldAndNew)
   dans System.Windows.Controls.DataForm.OnCurrentItemPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
   dans System.Windows.DependencyObject.RaisePropertyChangeNotifications(DependencyProperty dp, Object oldValue, Object newValue)
   sur System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, opération ValueOperation)
   dans System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp, Object value, Boolean allowReadOnlySet, Boolean isBindingInStyleSetter)
   dans System.Windows.Controls.DataForm.UpdateCurrentItem()
   dans System.Windows.Controls.DataForm.<SetUpCollectionView>b__8(DataForm instance, Object source, EventArgs eventArgs)
   dans System.Windows.Controls.WeakEventListener'3.OnEvent(TSource source, TEventArgs eventArgs)
   dans System.EventHandler.Invoke(Object sender, EventArgs e)
   dans Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.OnCurrentChanged()
   dans Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.MoveCurrentToPosition(Int32 position)
   dans Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.MoveCurrentTo(Object item)
   à Microsoft.MasterDataServices.Client.ViewModel.MasterData.EntityMembersViewModel.set_SelectedItem(valeur du membre)
   dans Microsoft.MasterDataServices.Client.ViewModel.Common.ItemsBase'2.ReloadItems()
   à Microsoft.MasterDataServices.Client.ViewModel.MasterData.EntityMembersViewModel.EntityMembers_RefreshNeeded(Expéditeur d’objet, EventArgs e)
   dans Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.Refresh()
   dans Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.MoveToPage(Int32 pageIndex)
   dans Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.MoveToNextPage()
   sur System.Windows.Controls.DataPager.PageMoveHandler(Int32 oldPageIndex, Int32 newPageIndex, PageMoveOperationDelegate pageMoveOperation)
   dans System.Windows.Controls.DataPager.OnNextPageButtonBaseClick(Object sender, RoutedEventArgs e)
   dans System.Windows.Controls.Primitives.ButtonBase.OnClick()
   dans System.Windows.Controls.Button.OnClick()
   dans System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
   dans System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
   à MS. Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName, UInt32 flags)

Scénario 2 :
Cliquez sur le bouton Ajouter un membre à la page 2 pour forcer l’Explorer à ajouter une nouvelle page. Ensuite, la page 3 est créée et vous recevez les erreurs suivantes :

Remarque

System.ArgumentOutOfRangeException : [ArgumentOutOfRange_Index]
Arguments :
Les chaînes de ressource de débogage ne sont pas disponibles. Souvent, la clé et les arguments fournissent des informations suffisantes pour diagnostiquer le problème. Voir http://go.microsoft.com/fwlink/?linkid=106663&Version=5.1.20913.00&File=mscorlib.dll&Key=ArgumentOutOfRange_Index
Nom du paramètre : index
   dans System.ThrowHelper.ThrowArgumentOutOfRangeException()
   dans System.Collections.Generic.List'1.get_Item(index Int32)
   dans System.Collections.ObjectModel.Collection'1.get_Item(index Int32)
   dans Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.GetEnumerator()
   à System.Windows.Controls.DataForm.get_ItemsCount()
   dans System.Windows.Controls.DataForm.SetCanMoveToLastItem()
   dans System.Windows.Controls.DataForm.SetAllCanProperties()
   dans System.Windows.Controls.DataForm.<SetUpCollectionView>b__a(DataForm instance, Object source, NotifyCollectionChangedEventArgs eventArgs)
   dans System.Windows.Controls.WeakEventListener'3.OnEvent(TSource source, TEventArgs eventArgs)
   sur System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
   dans Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.CollectionChangedHandler(Object sender, NotifyCollectionChangedEventArgs e)
   sur System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
   sur System.Collections.ObjectModel.ObservableCollection'1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
   dans System.Collections.ObjectModel.ObservableCollection'1.InsertItem(Index Int32, T item)
   dans System.Collections.ObjectModel.Collection'1.Insert(Index Int32, T item)
   sur Microsoft.MasterDataServices.Client.ViewModel.MasterData.EntityMembersViewModel.AddNewMemberToCollection(Guid requestId, EntityMembersGetResponse response, Exception ex)
   sur Microsoft.MasterDataServices.Client.ViewModel.ServiceProxy.ServiceClient.<>c__DisplayClass16'2.<ExecuteRequest>b__15(Object sender, RequestCompletedEventArgs'1 e)
   dans Microsoft.MasterDataServices.Client.ViewModel.ServiceProxy.ServiceClient.OnEntityMembersGetCompleted(Object state)

Résolution

Le problème a été résolu pour la première fois dans la mise à jour cumulative suivante de SQL Server.

Mise à jour cumulative 1 pour SQL Server 2014 /en-us/help/2931693

Mise à jour cumulative 9 pour SQL Server 2012 SP1 /en-us/help/2931078

À propos des mises à jour cumulatives pour SQL Server

Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et tous les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :

      

Informations supplémentaires

Une fois l’installation terminée, vous devez ouvrir le Gestionnaire de configuration Master Data Services Services afin de pouvoir mettre à niveau la base de données MDS.

  1. Cliquez sur Bases de données, puis sur Sélectionner une base de données.
  2. Connectez-vous à la base de données que vous souhaitez mettre à niveau. Quand la base de données est sélectionnée, le message suivant s’affiche : Cette base de données nécessite une mise à niveau. Vous ne pouvez pas modifier les paramètres système avant la mise à niveau de la base de données.
  3. Cliquez sur Mettre à niveau la base de données. L’Assistant Mettre à niveau la base de données s’ouvre. Suivez les instructions de l’Assistant pour mettre à niveau la base de données, puis cliquez sur Terminer.

État

Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».