Симптоми
В среда на 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 използва за описване на актуализациите на софтуера.