Recriando o cubo do TFS

Essa semana passei por uma situação em um cliente onde os relatórios do TFS não estavam funcionando

Fazendo o levantamento do motivo, percebemos que o cubo do TFS não estava conseguindo sincronizar e retornava o seguinte erro:

[Incremental Analysis Database Sync]: —> Microsoft.TeamFoundation.Server.WarehouseException: TF221122: An error occurred running job Incremental Analysis Database Sync for team project collection or Team Foundation server TEAM FOUNDATION. —> Microsoft.TeamFoundation.Framework.Server.AnalysisServiceConnectionException: Error encountered when creating connection to Analysis Services. Contact your Team Foundation Server administrator. —> Microsoft.AnalysisServices.OperationException: Erro do sistema de arquivos: O seguinte arquivo está corrompido: Arquivo físico: \\?\N:\OLAP\Data\Tfs_Analysis.0.db\Test Suite.0.dim\1151.Suite4ID.asstore. Arquivo lógico . Erros no gerenciador de metadados. Erro ao carregar Test Suite dimension do arquivo ‘\\?\N:\OLAP\Data\Tfs_Analysis.0.db\Test Suite.1151.dim.xml’. Erros no gerenciador de metadados. Erro ao carregar Team System cube do arquivo ‘\\?\N:\OLAP\Data\Tfs_Analysis.0.db\Team System.2319.cub.xml’. at Microsoft.AnalysisServices.XmlaClient.CheckForException(XmlReader reader, XmlaResult xmlaResult, Boolean throwIfError) at Microsoft.AnalysisServices.AnalysisServicesClient.Discover(IMajorObject obj, ObjectExpansion expansion) at Microsoft.AnalysisServices.Server.Refresh(IMajorObject obj, ObjectExpansion expansion) at Microsoft.AnalysisServices.Server.Connect(String connectionString, String sessionId) at Microsoft.TeamFoundation.Warehouse.AnalysisServicesUtil.Connect(Server server, String serverName) — End of inner exception stack trace — at Microsoft.TeamFoundation.Warehouse.AnalysisServicesUtil.Connect(Server server, String serverName) at Microsoft.TeamFoundation.Warehouse.AnalysisDatabaseSyncJobExtension.GetLastProcessedTimeStamp(String serverName, String dbName) at Microsoft.TeamFoundation.Warehouse.AnalysisDatabaseSyncJobExtension.DetermineProcessType(ControllerConfig controllerConfig, AnalysisDatabaseProcessingType desiredProcessingType, Boolean& lastProcessingFailed, Boolean& needCubeSchemaUpdate) at Microsoft.TeamFoundation.Warehouse.AnalysisDatabaseSyncJobExtension.RunInternal(TeamFoundationRequestContext requestContext, TeamFoundationJobDefinition jobDefinition, DateTime queueTime, String& resultMessage) at Microsoft.TeamFoundation.Warehouse.WarehouseJobExtension.Run(TeamFoundationRequestContext requestContext, TeamFoundationJobDefinition jobDefinition, DateTime queueTime, String& resultMessage) — End of inner exception stack trace —
Perceba que o arquivo físico do cubo esta corrompido. A solução foi recriar o cubo seguindo os passos abaixo:

Acessar o Team Foundation Server Administration Console e acessar a aba Reporting

cubo_imagem1

Clicar em Edit, e na mensagem clicar no botão OK

cubo_imagem2

Desmarcar a opção Use Reporting e clicar no botão OK

cubo_imagem3

O reporting ficará desconfigurado

cubo_imagem4

Acessar o Analysis Servcer através do Microsoft SQL Server Management Studio

cubo_imagem5

Localizar a database Tfs_Analysis, clicar com o botão direito e selecionar a opção Delete

cubo_imagem6

Clicar no botão OK

cubo_imagem7

Voltar no Team Foundation Server Administration Console clicar em Edit

cubo_imagem8

Selecionar a opção Use Reporting

Na aba Warehouse configurar o servidor e o nome da database

cubo_imagem10

Clicar no botão Test Connection

cubo_imagem11

Na aba Analysis Services configurar o servidor e o nome da database e o usuário

cubo_imagem12

Clicar em Test Connection

cubo_imagem13

Na aba Reports configurar o servidor e clicar no botão Populate URLs

cubo_imagem14

Veja que as URLs para Web Service e Report Manager devem ser preenchidas

cubo_imagem15

Configurar a conta para acesso e clicar no botão OK

cubo_imagem16

No momento em o botão OK é clicado, será recriado a database do Analysis

Iniciar os serviços, clicar em Start Jobs

cubo_imagem17

Status da configuração

cubo_imagem18

Verificar se a database foi criada

cubo_imagem19

Uma boa prática é processar manualmente o Warehouse e o Cubo para atualizar as informações, conforme esse link Manually process the data warehouse and analysis services cube for Team Foundation Server

Esse procedimento foi testado nas versões do TFS 2010 e TFS 2012 Update 3

Sobre Leandro Prado

Leandro Silveira Prado é Premier Field Engineer na Microsoft especializado em Application Lifecycle Management.