Domanda

La ricerca nei profili utente non funziona sui valori localizzati su SharePoint 2013

Ciao! Io dalla Russia e ieri stavo cercando di cercare profili utente in russo. Ad esempio, il mio cognome è Мурадов e il nome dell'account è Demo \ Muradov. Posso trovarmi cercando "Demo", "Muradov", ma non riesco a trovarmi da "мурадов".

Inserisci Descrizione dell'immagine qui Inserire l'immagine Descrizione qui

Per la ricerca Ho utilizzato Gestisci Pagina Profili utente da Central Administration e UserProfileManager.Search () Metodo dal codice. Ho deciso di capire, perché succede.

Sono stato decompile microsoft.office.server.userprofiles assembly e sega, che userprofilemanager.search () metodo utilizza la procedura memorizzata dbo.proc_profile_searchuser .

Inserisci Descrizione dell'immagine qui Inserisci Descrizione dell'immagine qui

Gestisci i profili utente utilizzati anche questa procedura (l'ho controllato con SQL Server Profiler). Ho usato il profiler di SQL Server e ho trovato la chiamata della procedura, sembra

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

ed è stato interessante, perché

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 Aprire il codice per Dbo.Proc_PROFILE_SearchUser e inizia a indagare ... e trovato, che c'è un tavolo Dbo.profile_searchusertermstats , che memorizza il mio cognome come '???????' , ma Table Dbo.profile_searchusertiAbles - Memorizza il mio cognome come 'мурадов' . Ho cambiato valore '???????' a 'мурадов' a dbo.profile_searchusertermstats tabella e chiamare dbo.proc_profile_searchuser - Trovato con il parametro di ricerca come 'мурадов'! userprofilemanager.search () e gestire anche la pagina dei profili utente. Ma, se modifico il mio profilo e salvo, i miei valori dei miei russi saranno di nuovo come "???????".

Ho pensato, quel problema in Collation of SQL Server (era latin1_GENERAL_CI_AS_KS_WS) e rimuovo SQLServer e installo con Collation Cirillic_GENERAL_CI_AS. Ma tutti i database di SharePoint sono stati creati con Latin1_GENERAL_CI_AS_KS_WS Collation.

Ora, sono bloccato. Non ho idea di cosa dovrei fare esattamente con questo e ho bisogno di aiuto.

Uper. Lavoro con Windows Server 2012 Stndart con il pacchetto di lingue russo, ho impostato anche la locale russa in OS (anche io cambio locale in inglese (Stati Uniti) - non aiuta, io Provato)

Upd2. Ho trovato la tabella UserProfileValue che memorizzare i valori del profilo come SQL_variant e quando questa colonna converti in Nvarchar (4000) - ci sono valori giusti ('мурадов') trasformarsi in modo sbagliato ('??? ???? '). Anche se provo azionare seguendo: Seleziona 'мурадов' - Risultato come '??????', ma Seleziona n'мурадов '- Risultato come' мурадов ' Il problema ancora non risolto.

È stato utile?

Soluzione

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.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top