KB3196100 – ПОПРАВКА: По време на паралелна обработка на дялове възниква изключение, ако колона е повторно кодирана в SQL Server 2016

Отнася се за
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

Симптоми

В среда на Microsoft SQL Server 2016 обработвате паралелно множество дялове от таблица. Когато проследявате напредъка, виждате събитие за повторно кодиране за поне една от колоните.

В тази ситуация операцията за обработка може да е неуспешна с грешка по изключение. Понякога обработването може да завърши успешно, но след това следващите заявки са неуспешни с грешка за изключение, подобна на следната:

Забележка

Възникна неочаквано изключение.
Възникна неочаквано изключение. (Microsoft SQL Server 2016 Analysis Services)
Местоположение на програмата:
   в Microsoft.AnalysisServices.AdomdClient.AdomdConnection.XmlaClientProvider.Microsoft.AnalysisServices.AdomdClient.IExecuteProvider.ExecuteTabular(CommandBehavior behavior, ICommandContentProvider contentProvider, AdomdPropertyCollection commandProperties, IDataParameterCollection parameters)
   at Microsoft.AnalysisServices.AdomdClient.AdomdCommand.ExecuteReader(CommandBehavior behavior)
   в Microsoft.AnalysisServices.AdomdClient.AdomdCommand.ExecuteReader()
   в Microsoft.ReportingServices.QueryDesigners.ASDesigner.QueryBuilderClientControl.QueryExec.ThreadExecution()

Забележка: Понякога този проблем възниква, след като обработката приключи и се изпълнят заявки спрямо обработените данни.

Решение

Кумулативна информация за актуализацията

Корекцията за този проблем е включена в следната кумулативна актуализация за SQL Server:

За кумулативните актуализации за SQL Server

Всяка нова кумулативна актуализация за SQL Server съдържа всички актуални поправки и корекции на защитата, които са били включени в предишната кумулативна актуализация. Прегледайте последните кумулативни актуализации за SQL Server:

Последна сборна актуализация за SQL Server 2016
      

      

Заобиколно решение

За да заобиколите този проблем, направете едно от следните неща:

  • Определете кои колони изискват повторно кодиране, и използвайте фалшив дял в началото, за да генерирате стойности, които ще наложат хеширане във фазата на откриване. Фалшивият дял трябва да е този, който се използва за избор на кодирането, преди да започне паралелизмът. След като всички дялове са обработени, можете да изчистите или изтриете фалшивия дял.
  • Използвайте серийна обработка вместо паралелна.

Състояние

Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.

Повече информация

Паралелната обработка на таблични дялове има следната логика:

  • Използвайте данните в единия дял, за да определите кодирането (стойност или хеш) на колоните.
  • След като кодирането бъде избрано, другите дялове могат да започнат да се обработват паралелно.
  • Ако е избрано кодиране на стойности и докато редовете се извличат, може да се срещне стойност, която не се побира в схемата за кодиране на стойности. В този случай цялата колона трябва да бъде повторно кодирана в схемата за кодиране на хешовете.
  • Тази операция за повторно кодиране (преобразуване на кодиране на стойностите в хеширано кодиране) среща проблем, когато други дялове се обработват по същото време.

Справки

Научете повече относно терминологията, която Microsoft използва за описване на актуализациите на софтуера.