Это исправление также относится к службам Microsoft SQL Server 2014 Analysis Services (SSAS 2014).
Проблема
Предположим, что у вас есть некоторые измерения в кубе Microsoft SQL Server 2012 Analysis Services (SSAS 2012) или SQL Server 2014 Analysis Services (SSAS 2014) (Tfs_Analysis), содержащем данные для Microsoft Visual Studio Team Foundation Server (TFS). При выполнении команды процесса для измерений обработка может завершиться ошибкой, и появляется следующее сообщение об ошибке:
Примечание
Внутренняя ошибка: произошла непредвиденная ошибка (файл "pfiallocator.cpp", строка 822, функция "PFMemoryHolder::RegisterMemoryHolder").
Если для трассировки проблемы используется профилировщик SQL, трассировка показывает, что во время команды ProcessFull для измерения vDimWorkItemTreeOverlay возникает следующее сообщение об ошибке:
Примечание
Внутренняя ошибка: произошла непредвиденная ошибка (файл "pfiallocator.cpp", строка 822, функция "PFMemoryHolder::RegisterMemoryHolder"). Ошибки в ядре хранилища OLAP: Произошла ошибка при обработке атрибута 'WorkItemTreeSK' измерения 'Дерево рабочих элементов' из базы данных 'Tfs_Analysis'.
Примечание. Сбой обработки влияет на проекты баз данных служб Analysis Services, которые содержат источники данных, использующие управляемого поставщика данных платформы .NET Framework для SQL Server, которым является System.Data.SqlClient.
Причина
Эта проблема возникает из-за того, что дублирующееся значение ключа измерения в источнике данных используется обработкой со службами Analysis Services.
Решение
Эта проблема была впервые исправлена в следующем накопительном пакете обновления SQL Server.
Накопительный пакет обновления 1 для SQL Server 2014 г. /en-us/help/2931693
Накопительный пакет обновления 6 для SQL Server 2012 с пакетом обновления 1 (SP1) /en-us/help/2874879
Сведения о накопительных обновлениях для SQL Server
Каждый новый накопительный пакет обновления для SQL Server содержит все исправления и исправления безопасности, которые входили в состав предыдущего накопительного пакета обновления. Ознакомьтесь с последними накопительными пакетами обновления для SQL Server:
- Последний накопительный пакет обновления для SQL Server 2014
- Последний накопительный пакет обновления для SQL Server 2012 с пакетом обновления 1 (SP1)
Дополнительные сведения
После применения исправления обработка будет выполняться в соответствии с настройками конфигурации ошибок обработки, а не в соответствии с внутренними симптомами ошибки.
Поведением можно управлять с помощью параметра Дублировать ключ при обработке размеров SSAS. Или вы можете управлять поведением, настроив свойство KeyDuplicate свойства ErrorConfiguration следующим образом при проектировании размеров:
- Если для параметра KeyDuplicate установлено значение по умолчанию IgnoreError, предупреждения о повторном значении ключа отсутствуют, и обработка продолжается.
- Если параметру KeyDuplicate присвоено значение ReportAndContinue, сообщается об ошибках или предупреждениях. Однако обработка продолжается.
- Если параметру KeyDuplicate присвоено значение ReportAndStop, сообщается об ошибках или предупреждениях, а обработка останавливается.
Состояние
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».
Временное решение
Чтобы обойти эту проблему, удалите недопустимый повторяющийся ключ в таблицах измерений хранилища данных в SQL Server Database Engine. Чтобы найти повторяющийся ключ, можно использовать следующий запрос:SELECT COUNT(WorkItemTreeSK) WorkItemTreeSKCount, WorkItemTreeSK
FROM [Tfs_Warehouse].dbo.vDimWOrkItemTreeOverlay
ГРУППИРОВКА ПО WorkItemTreeSK
НАЛИЧИЕ COUNT(WorkItemTreeSK) >1
Ссылки
Дополнительные сведения о параметрах и параметрах обработки см. на следующем веб-сайте MSDN:
Сведения о параметрах и параметрах обработки Дополнительные сведения о том, как вручную обработать хранилище или куб, см. на следующем веб-сайте MSDN:
Ручная обработка хранилища данных и куба Analysis Services для Team Foundation Server