Pergunta

Pesquisa em Perfis de Usuário não funciona em valores localizados no Sharepoint 2013

OLÁ!I da Rússia, e ontem eu estava tentando procurar perfis de usuário por russo.Por exemplo, o meu último nome é Мурадов e o nome da conta é demo\muradov.Eu posso me encontrar através de pesquisa "demo", "muradov", mas eu não posso encontrar-me por "Мурадов".

enter image description here enter image description here

Para pesquisar eu usei Gerenciar Perfis de Usuário página da administração central e UserProfileManager.De pesquisa() método de código.Eu decidi descobrir por que isso acontece.

Eu estava descompilar A Microsoft.Office.Server.UserProfiles montagem e viu, que UserProfileManager.De pesquisa() o método é usando o procedimento armazenado dbo.proc_Profile_SearchUser.

enter image description here enter image description here

Gerenciar Perfis de Usuário utilizado este procedimento também (eu verifiquei com o SQL Server Profiler).Usei o SQL Server profiler e encontrado chamada de procedimento, parecer

exec dbo.proc_Profile_SearchUser @partitionID='0c37852b-34d0-418e-91c6-2ac25af4be5b',@correlationId='00000000-0000-0000-0000-000000000000',@Term1=N'demo'  

E foi interessante, porque

exec dbo.proc_Profile_SearchUser @partitionID='0c37852b-34d0-418e-91c6-2ac25af4be5b',@correlationId='00000000-0000-0000-0000-000000000000',@Term1=N'muradov' - retrieved my profile

exec dbo.proc_Profile_SearchUser @partitionID='0c37852b-34d0-418e-91c6-2ac25af4be5b',@correlationId='00000000-0000-0000-0000-000000000000',@Term1=N'Мурадов' - my profile not found

Eu de código aberto para dbo.proc_Profile_SearchUser e começar a investigar...e encontrou, que existe uma tabela dbo.Profile_SearchUserTermStats, que armazenam o meu último nome '???????', mas , tabela dbo.Profile_SearchUserTables - armazena o meu último nome 'Мурадов'.Eu mudei valor '???????' a 'Мурадов' em dbo.Profile_SearchUserTermStats tabela e chamada de dbo.proc_Profile_SearchUser - ele encontrou com o parâmetro de pesquisa como "Мурадов'! UserProfileManager.De pesquisa() e Gerenciar Perfis de Usuário da página de encontrar-me também.Mas, se eu editar o meu perfil " e salvar, a minha russos valores serão novamente como '???????'.

Eu pensei, que o problema no agrupamento do SQL Server (ele foi Latin1_General_CI_AS_KS_WS), e remover SQLServer e instalar com o agrupamento Cyrillic_General_CI_AS.Mas todos os bancos de dados do sharepoint foi criado com o agrupamento Latin1_General_CI_AS_KS_WS.

Agora, eu estou preso.Eu não tenho nenhuma idéia do que exatamente eu deveria fazer com isso e eu preciso de ajuda.

UPD. Eu trabalho com o Windows Server 2012 Stndart com o pacote de idioma russo, também eu o conjunto russo localidade no sistema operacional (mesmo é que eu alterar o idioma para inglês (EUA) - isso não ajuda, eu tentei)

UPD2. Achei tabela UserProfileValue que armazenam valores do perfil como sql_variant e quando esta coluna converter para o tipo de dados nvarchar(4000) - há direito values ('Мурадов') para transformar errado ('???????').Mesmo se eu tentar executar o seguinte:SELECIONE 'Мурадов' - resultado como"??????', mas SELECIONE N'Мурадов' - resultado como "Мурадов' O problema ainda não resolvido.

Foi útil?

Solução

Eu encontrei bug relacionado com este comportamento.Passos para corrigi-los:

  1. Aberto [dbo].[proc_Profile_SetSearchUserTerms] procedimento
  2. Seleção @changedValues declaração (varchar)
  3. Alterar o procedimento com
    DECLARE @changedValues TABLE (PropertyValue nvarchar(255), Direction int)
  4. Seja feliz.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top