TFS 2010 - Não é possível consultar determinados usuários

0

Parece que temos um problema com a instalação do Team Foundation Server 2010 que fornece um erro quando determinados usuários são consultados. Se os incluirmos no filtro "AssignedTo", a consulta será imediatamente afetada por:

TF237161: Server operation timed out or server not responding. Try again.

Para outros usuários, isso funciona bem, e o TFS atribuído a esses usuários problemáticos é retornado nos resultados das consultas de trabalho. Eu verifiquei e não parece ser um problema de permissão. Nós migramos do Team Foundation Server 2008 para o TFS 2010 no ano passado, mas as pessoas que estão afetando acham que isso estava acontecendo antes mesmo assim.

Alguém tem alguma idéia de por onde começar a solucionar isso? Eu tenho acesso total ao servidor e banco de dados, e comecei a tentar replicar a consulta no SQL para ver se é um erro no banco de dados, mas não tenho muito longe até agora.

Se alguém tiver alguma sugestão, seria muito apreciado! Obrigado

    
por w69rdy 11.07.2012 / 11:40

3 respostas

2

Eu finalmente consegui encontrar a fonte do problema! Acontece que por razões desconhecidas, os usuários afetados apareceram mais de uma vez na tabela Constants (com base no nome que está armazenado na coluna DisplayPart ) que reside em nosso banco de dados TfsDefaultCollection TFS. Esta consulta destacou todos os registros com DisplayName 'duplicados:

SELECT * FROM Tfs_DefaultCollection.dbo.Constants
WHERE DisplayPart IN
(
    SELECT DisplayPart FROM dbo.Constants 
    GROUP BY DisplayPart
    HAVING COUNT(ConstID) > 1
)
ORDER BY DisplayPart ASC

Uma consulta que o TFS usa ao consultar itens do TFS recupera os usuários ConstID dessa tabela e só funciona quando o nome deles é exclusivo:

declare @P3_1 int
select @P3_1 = ConstID from dbo.[Constants] where DisplayPart = @P3
if (@@rowcount > 1)
begin
        raiserror(600174, 16, 1) with seterror, nowait
        return
end
set @P3_1 = isnull(@P3_1,-2147483648);

Então, como eles apareceram mais de uma vez, a consulta falhou com um erro. Assim, para resolvê-lo, nós renomeamos as constantes duplicadas com o último ConstID para algo diferente (anexamos um? Ao final) , e ei! Funcionou de novo.

Se eu descobrir por que isso aconteceu, postarei uma atualização. Enquanto isso, espero que isso seja útil para qualquer pessoa com o mesmo problema irritante

    
por 05.09.2012 / 14:59
1

Tente estas instruções para obter informações de rastreamento detalhadas sobre o que está acontecendo em seu servidor TFS.

    
por 26.07.2012 / 01:53
0

Observe que você nunca deve manipular diretamente seus dados dessa forma - isso colocará seu sistema em um estado que é muito difícil de ser suportado pelo grupo de produtos TFS. Nomes de exibição duplicados são realmente esperados em certos casos - geralmente quando dois usuários em diferentes domínios foram sincronizados no TFS com um nome de exibição compartilhado (por exemplo, DOMAIN1 \ user e DOMAIN2 \ user ambos têm nome de exibição 'user').

A consulta Rastreamento de Item de Trabalho que você anotou acima é otimizada para o caso em que não há nomes de exibição duplicados no sistema. Normalmente, o que deve acontecer é que o erro levantado pelo trecho de código SQL que você incluiu gerará uma exceção strongmente tipada no servidor. Essa exceção é capturada e, em seguida, um lote SQL menos ideal é gerado para manipular o caso de nome de exibição duplicado. Este não é um ótimo padrão, claramente, e planejamos limpá-lo em uma versão futura. Por enquanto, no entanto, é assim que as coisas funcionam aqui.

Com toda essa configuração, é muito provável que a causa raiz do problema seja que sua instância do SQL não tenha suas mensagens de erro instaladas corretamente. Quando este for o caso, o erro que é gerado não será convertido adequadamente para a exceção strongmente tipada esperada pelo código do servidor, e o segundo lote SQL menos ideal nunca será gerado, levando à falha que você estava vendo ... você conserta sua instalação de mensagem de erro em sua instância do SQL, o problema deve ser resolvido e suas consultas devem retornar novamente os resultados apropriados para usuários com nomes de exibição ambíguos.

    
por 13.07.2013 / 00:43