La recherche dans les profils utilisateur ne fonctionne pas sur les valeurs localisées de SharePoint 2013

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/80890

Question

La recherche dans les profils utilisateur ne fonctionne pas sur les valeurs localisées de SharePoint 2013

Salut! I de la Russie et d'hier, j'essayais de rechercher des profils d'utilisateurs en russe. Par exemple, mon nom de famille est Мурадов et le nom du compte est Demo \ Muradov. Je peux me retrouver en cherchant "démo", "Muradov", mais je ne me retrouve pas par "Мурадов".

Entrez la description de l'image ici Entrez la description de l'image ici

Pour la recherche I Utilisé Gérer la page des profils utilisateur à partir de l'administration centrale et userprofilememanager.search () méthode à partir du code. J'ai décidé de comprendre pourquoi cela se passe-t-il.

J'étais décompile Microsoft.Office.Server.userprofiles Assembly and Saw, que userprofilemanager.search () est à l'aide de la procédure stockée dbo.proc_profile_searchuser .

Entrez la description de l'image ici Entrez la description de l'image ici

Gérer les profils utilisateur utilisés cette procédure également (je l'ai vérifiée avec le profileur SQL Server). J'ai utilisé le profileur SQL Server et trouvé l'appel de la procédure, il semble que

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

Et c'était intéressant, car

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

i ouvert de code pour dbo.proc_profile_searchuser et commencez à étudier ... et trouvé, qu'il y a une table dbo.profile_searchusertertermstats , qui stocke mon nom de famille comme '???????' , mais table dbo.profile_searchusertables - stocke mon nom de famille comme 'мурадов' . J'ai changé de valeur '???????' à 'мурадов' à dbo.profile_searchusertertermstats table et appel dbo.proc_profile_searchuser - il a trouvé avec le paramètre de recherche comme "Мурадов"! userprofilemanager.search () et gérer la page des profils d'utilisateurs m'a trouvé aussi. Mais si je modifie mon profil et que je l'enregistre, mes valeurs de mes Russes seront à nouveau comme «??????? '.

Je pensais que ce problème dans la collation de SQL Server (c'était latin1_general_ci_as_ks_ws), et je supprimai SQLServer et installer avec une collation Cyrillic_General_ciI_AS. Mais toutes les bases de données SharePoint ont été créées avec Latin1_Generaleral_ci_as_ks_ws Collation.

Maintenant, je suis coincé. Je n'ai aucune idée de ce que je devrais faire exactement avec ça et j'ai besoin d'aide.

upd. Je travaille avec Windows Server 2012 STNDART avec le pack de langue russe, aussi je définit les paramètres régionaux russes au système d'exploitation (même je change les paramètres régionaux en anglais (US) - ça n'aide pas, je essayé)

upd2. J'ai trouvé la table userProfilevalue qui stocke les valeurs de profil comme sql_variant et lorsque cette colonne se convertit à NvarchaRar (4000) - il y a des valeurs droites ('мурадов') se transformer en mauvais ('??? ???? '). Même si j'essaye de courir suivre: Sélectionnez 'Мурадов' - Résultat comme '??????', mais Sélectionnez N'мурадов '- Résultat comme' мурадов ' Le problème n'est toujours pas résolu.

Était-ce utile?

La solution

I have found bug related with this behavior. Steps to fix them:

  1. Open [dbo].[proc_Profile_SetSearchUserTerms] procedure
  2. Check @changedValues declaration (varchar)
  3. Alter procedure with
    DECLARE @changedValues TABLE (PropertyValue nvarchar(255), Direction int)
  4. Be happy.
Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top