La búsqueda en perfiles de usuario no funciona en los valores localizados en SharePoint 2013
-
10-12-2019 - |
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 "Мурадов".
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 .
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.
Solución
I have found bug related with this behavior. Steps to fix them:
- Open
[dbo].[proc_Profile_SetSearchUserTerms]
procedure - Check
@changedValues
declaration (varchar) - Alter procedure with
DECLARE @changedValues TABLE (PropertyValue nvarchar(255), Direction int)
- Be happy.