KB2932340 - ИСПРАВЛЕНО: ошибки при добавлении участника в MDS SQL Server 2012 или SQL Server 2014

Применяется к
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)

Проблема

Рассмотрим следующий сценарий.

  • У вас установлены Master Data Services (MDS) для Microsoft SQL Server 2012 или SQL Server 2014.
  • Вы создаете сущность со 100 участниками и отмеченным параметром "Создавать значения кода автоматически".
  • В обозревателе MDS сущность содержит две страницы элементов, количество членов на странице 2 равно размеру страницы сетки (по умолчанию — 50).

Сценарий 1
Нажмите кнопку Добавить участника на странице 1, введите данные, необходимые для добавления нового участника, а затем нажмите кнопку Следующая страница . Страница 3 создана, и появляется следующее сообщение об ошибке:

Примечание

System.ArgumentOutOfRangeException: [ArgumentOutOfRange_Index]
Аргументы:
Отладка строк ресурсов недоступна. Часто ключ и аргументы предоставляют достаточно информации для диагностики проблемы. См. http://go.microsoft.com/fwlink/?linkid=106663&Version=5.1.20913.00&File=mscorlib.dll&key=ArgumentOutOfRange_Index
Имя параметра: index
   в System.ThrowHelper.ThrowArgumentOutOfRangeException()
   в System.Collections.Generic.List'1.get_Item(индекс Int32)
   в System.Collections.ObjectModel.Collection'1.get_Item(индекс Int32)
   в Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.GetEnumerator()
   at System.Windows.Controls.DataForm.get_ItemsCount()
   в System.Windows.Controls.DataForm.SetCanMoveToLastItem()
   в System.Windows.Controls.DataForm.SetAllCanProperties ()
   в System.Windows.Controls.DataForm.SetIsItemValid()
   в System.Windows.Controls.DataForm.GenerateUI(логическое значение clearEntityErrors, логическое значение swapOldAndNew)
   в System.Windows.Controls.DataForm.OnCurrentItemPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
   в System.Windows.DependencyObject.RaisePropertyChangeNotifications(DependencyProperty dp, Object oldValue, Object newValue)
   в System.Windows.DependencyObject.UpdateEffectiveValue(свойство DependencyProperty, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, операция ValueOperation)
   в System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp, Object value, Boolean allowReadOnlySet, Boolean isBindingInStyleSetter)
   в System.Windows.Controls.DataForm.UpdateCurrentItem()
   в System.Windows.Controls.DataForm.<SetUpCollectionView>b__8(экземпляр DataForm, источник объекта, EventArgs, eventArgs)
   в System.Windows.Controls.WeakEventListener'3.OnEvent(TSource source, TEventArgs eventArgs)
   at System.EventHandler.Invoke(Object sender, EventArgs e)
   в Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.OnCurrentChanged()
   в Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.MoveCurrentToPosition(Int32 position)
   в Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.MoveCurrentTo(элемент объекта)
   в Microsoft.MasterDataServices.Client.ViewModel.MasterData.EntityMembersViewModel.set_SelectedItem(значение участника)
   в Microsoft.MasterDataServices.Client.ViewModel.Common.ItemsBase'2.ReloadItems()
   at Microsoft.MasterDataServices.Client.ViewModel.MasterData.EntityMembersViewModel.EntityMembers_RefreshNeeded(Object sender, EventArgs e)
   в Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.Refresh()
   в Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.MoveToPage(Int32 pageIndex)
   в Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.MoveToNextPage()
   в System.Windows.Controls.DataPager.PageMoveHandler(Int32 oldPageIndex, Int32 newPageIndex, PageMoveOperationDelegate pageMoveOperation)
   at System.Windows.Controls.DataPager.OnNextPageButtonBaseClick(Object sender, RoutedEventArgs e)
   в System.Windows.Controls.Primitives.ButtonBase.OnClick()
   в System.Windows.Controls.Button.OnClick()
   в System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
   в 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)

Сценарий 2
Нажмите кнопку "Добавить участников" на странице 2, чтобы обозреватели добавили новую страницу. Затем создается страница 3 и появляются следующие ошибки:

Примечание

System.ArgumentOutOfRangeException: [ArgumentOutOfRange_Index]
Аргументы:
Отладка строк ресурсов недоступна. Часто ключ и аргументы предоставляют достаточно информации для диагностики проблемы. См. http://go.microsoft.com/fwlink/?linkid=106663&Version=5.1.20913.00&File=mscorlib.dll&key=ArgumentOutOfRange_Index
Имя параметра: index
   в System.ThrowHelper.ThrowArgumentOutOfRangeException()
   в System.Collections.Generic.List'1.get_Item(индекс Int32)
   в System.Collections.ObjectModel.Collection'1.get_Item(индекс Int32)
   в Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.GetEnumerator()
   at System.Windows.Controls.DataForm.get_ItemsCount()
   в System.Windows.Controls.DataForm.SetCanMoveToLastItem()
   в System.Windows.Controls.DataForm.SetAllCanProperties ()
   в System.Windows.Controls.DataForm.<SetUpCollectionView>b__a(экземпляр DataForm, источник объекта, NotifyCollectionChangedEventArgs eventArgs)
   в System.Windows.Controls.WeakEventListener'3.OnEvent(TSource source, TEventArgs eventArgs)
   в System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
   в Microsoft.MasterDataServices.Client.ViewModel.Common.SortablePagedCollectionView'1.CollectionChangedHandler(Object sender, NotifyCollectionChangedEventArgs e)
   в System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
   в System.Collections.ObjectModel.ObservableCollection'1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
   в System.Collections.ObjectModel.ObservableCollection'1.InsertItem(индекс Int32, элемент T)
   at System.Collections.ObjectModel.Collection'1.Insert(индекс Int32, элемент T)
   в Microsoft.MasterDataServices.Client.ViewModel.MasterData.EntityMembersViewModel.AddNewMemberToCollection(Guid requestId, EntityMembersGetResponse response, Exception ex)
   в Microsoft.MasterDataServices.Client.ViewModel.ServiceProxy.ServiceClient.<>c__DisplayClass16'2.<ExecuteRequest>b__15(Object sender, RequestCompletedEventArgs'1 e)
   в Microsoft.MasterDataServices.Client.ViewModel.ServiceProxy.ServiceClient.OnEntityMembersGetCompleted(состояние объекта)

Решение

Эта проблема была впервые исправлена в следующем накопительном пакете обновления SQL Server.

Накопительный пакет обновления 1 для SQL Server 2014 г. /en-us/help/2931693

Накопительный пакет обновления 9 для SQL Server 2012 с пакетом обновления 1 (SP1) /en-us/help/2931078

Сведения о накопительных обновлениях для SQL Server

Каждый новый накопительный пакет обновления для SQL Server содержит все исправления и исправления безопасности, которые входили в состав предыдущего накопительного пакета обновления. Ознакомьтесь с последними накопительными пакетами обновления для SQL Server:

      

Дополнительные сведения

После завершения установки необходимо открыть диспетчер конфигураций диспетчера конфигурации Master Data Services , чтобы можно было обновить базу данных MDS.

  1. Щелкните "Базы данных", а затем выберите "Выбрать базу данных".
  2. Подключитесь к базе данных, которую хотите обновить. Если база данных выделена, появится следующее сообщение: "Эта база данных нуждается в обновлении. Пока база данных не обновлена, изменить параметры системы невозможно.
  3. Нажмите кнопку Обновить базу данных. Откроется мастер обновления базы данных . Следуйте инструкциям мастера для обновления базы данных и нажмите кнопку "Готово".

Состояние

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