Pregunta

Buscar en los perfiles de usuario no funciona en los valores localizados en SharePoint 2013

¡Hola! Yo de Rusia y ayer estaba tratando de buscar perfiles de usuario por ruso. Por ejemplo, mi apellido es Мурадов y el nombre de la cuenta es Demo \ Muradov. Puedo encontrarme buscando "Demo", "Muradov", pero no puedo encontrarme por "Мурадов".

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Para la búsqueda, utilicé Gestionar la página de perfiles de usuario de la administración central y userprofileManager.search () Método de código. Decidí averiguarlo, por qué sucede.

Fui descompile microsoft.office.server.userprofiles ensamblaje y sierra, que userprofileManager.search () está utilizando un procedimiento almacenado dbo.proc_profile_searchuser .

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Gestionar perfiles de usuario utilizó este procedimiento también (lo veré con SQL Server Profiler). Utilicé SQL Server Profiler y la llamada de procedimiento encontrado, parece

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

y fue interesante, 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

Abrir código para dbo.proc_profile_searchuser y empieza a investigar ... y encontré que hay una tabla dbo.profile_searchusertermstatststatstertermstatterststatterststattersterterterterterter > '???????' , pero tabla dbo.profile_searchusertables - almacena mi apellido como 'мурадов' . Cambié valor '???????' a 'мурадов' a dbo.profile_searchusertermstatstatstatstatststatterststatstatststatststatterterterterterterterterterterterterterterterterterterterterterterterterterterterterterter userprofileManager.search () y administre la página Perfiles de usuario también me encontró. Pero, si edito mi perfil y lo guardo, mis valores de los rusos serán nuevamente como '???????'.

Pensé, ese problema en la colación de SQL Server (fue latin1_general_ci_as_ks_ws), y eliminé SQLSERVER e instale con Collación Cyrillic_General_ci_as. Pero todas las bases de datos de SharePoint se crearon con latin1_general_ci_as_ks_ws Collation.

ahora, estoy atascado. No tengo idea de lo que debo hacer exactamente con esto y necesito ayuda.

upd. I Trabajo con Windows Server 2012 StNDART con Paquete de idioma ruso, también configuro la configuración regional rusa en el sistema operativo (incluso si cambio a la configuración regional al inglés (EE. UU.) - No ayuda, yo intentado)

Upd2. encontré la tabla userprofilevalue que almacena los valores de perfil como SQL_VariNT y cuando esta columna se convierte a NVARCHAR (4000): hay valores correctos ('Мурадов') Transforme en mal ('??? ???? '). Incluso si intento ejecutar siguiendo: Seleccione 'Мурадов' - resultado como '??????', pero Seleccione N'мурадов '- resultado como' Мурадов ' El problema aún no se resuelve.

¿Fue útil?

Solución

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.
Licenciado bajo: CC-BY-SA con atribución
scroll top