Pesquisa em Perfis de Usuário não funciona em valores localizados no Sharepoint 2013
-
10-12-2019 - |
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 "Мурадов".
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.
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.
Solução
Eu encontrei bug relacionado com este comportamento.Passos para corrigi-los:
- Aberto
[dbo].[proc_Profile_SetSearchUserTerms]
procedimento - Seleção
@changedValues
declaração (varchar) - Alterar o procedimento com
DECLARE @changedValues TABLE (PropertyValue nvarchar(255), Direction int)
- Seja feliz.