Este hotfix também se aplica aos Serviços de Análise do Microsoft SQL Server 2014 (SSAS 2014).
Sintomas
Assuma que tem algumas dimensões nos Serviços de Análise do Microsoft SQL Server 2012 (SSAS 2012) ou SQL Server 2014 Analysis Services (SSAS 2014 Tfs_Analysis) que contém os dados do Microsoft Visual Studio Team Foundation Server (TFS). Quando executar um comando processuais contra as dimensões, o processamento pode falhar e receber a seguinte mensagem de erro:
Erro interno: Ocorreu um erro inesperado (ficheiro 'pfiallocator.cpp', linha 822, função 'PFMemoryHolder:::RegisterMemoryHolder').
Se utilizar o Perfil SQL para rastrear o problema, o traço mostra que a seguinte mensagem de erro ocorre durante o comando ProcessFull na dimensão vDimWorkItemTreeOverlay:
Erro interno: Ocorreu um erro inesperado (ficheiro 'pfiallocator.cpp', linha 822, função 'PFMemoryHolder:::RegisterMemoryHolder'). Erros no motor de armazenamento OLAP: Ocorreu um erro enquanto estava a ser processado o atributo 'WorkItemTreeSK' da dimensão "Árvore do Item de Trabalho" da base de dados "Tfs_Analysis".
NotaA falha de processamento afeta os desenhos da base de dados dos Serviços de Análise que têm fontes de dados que utilizaram o fornecedor de dados-quadro .NET gerido para o SQL Server, que é System.Data.SqlClient.
Causa
O problema ocorre porque um valor chave de dimensão duplicado na fonte de dados é utilizado pelo processamento dos Serviços de Análise.
Resolução
O problema foi corrigido pela primeira vez na seguinte atualização cumulativa do SQL Server.
Atualização Cumulativa 1 para SQL Server 2014 /en-us/help/2931693
Atualização Cumulativa 6 para SQL Server 2012 SP1 /en-us/help/2874879
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com a atualização cumulativa anterior. Confira as últimas atualizações cumulativas do SQL Server:
Mais Informações
Depois de aplicar o hotfix, o processamento comportar-se-á de acordo com as definições de configuração de erro de processamento em vez de de acordo com os sintomas internos de erro. Pode controlar o comportamento utilizando a definição da chave Duplicada quando processa as dimensões SSAS. Ou, você pode controlar o comportamento configurando a propriedade KeyDuplicate da propriedade ErrorConfiguration da seguinte forma quando projeta as dimensões:
-
Quando a definição KeyDuplicate é definida para a definição padrão IgnoreError,não há avisos quando um valor de chave duplicado é encontrado e o processamento continua.
-
Quando a definição keyDuplicate é definida para ReportAndContinue, os erros ou avisos são reportados. No entanto, o processamento continua.
-
Quando a definição keyDuplicate está definida para ReportAndStop,os erros ou avisos são reportados e o processamento é interrompido.
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Solução
Para contornar o problema, elimine a chave duplicada inválida nas tabelas de dimensão do armazém de dados no SqL Server Database Engine. Pode utilizar a seguinte consulta para encontrar a chave duplicada:SELECT COUNT(WorkItemTreeSK) WorkItemTreeSKCount, WorkItemTreeSKFROM [Tfs_Warehouse].dbo.vDimWOrkItemTreeOverlayGROUP BY WorkItemTreeSKHAVING COUNT(WorkItemTreeSK) >1
Referências
Para obter mais informações sobre opções e configurações de processamento, aceda ao seguinte website da MSDN:
Informação sobre opções e configurações de processamentoPara obter mais informações sobre como processar o armazém ou o cubo manualmente, aceda ao seguinte site da MSDN: