문제

사용자 프로필 검색이 SharePoint 2013 에서 현지화 된 값에서 작동하지 않습니다.

안녕하세요! 나는 러시아와 어제 출신이었습니다. 러시아어로 사용자 프로필을 검색하려고했습니다. 예를 들어, 성 마지막 이름은 Мурадов 및 계정 이름이 Demo \ Muradov입니다. 나는 "Demo", "Muradov"를 검색하여 자신을 찾을 수 있지만 "мурадов"로 나 자신을 찾을 수 없습니다.

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명

검색은 중앙 관리 및 userprofilemanager.search () 메소드에서 사용자 프로필 관리를 사용했습니다. 나는 그것이 왜 일어나는지 알아 내기로 결정했다.

Decempile microsoft.office.server.userProfiles userprofilemanager.search () 메소드가 저장 프로 시저 dbo.proc_profile_searchuser를 사용하고 있습니다 .

여기에 이미지 설명을 입력하십시오> 여기에 이미지 설명을 입력하십시오

사용자 프로파일 관리이 절차를 너무 많이 사용합니다 (SQL Server 프로필러에서 확인했습니다). SQL Server Profiler를 사용하고 프로 시저 호출을 찾았으며 처럼 보입니다.

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

그리고 흥미 롭습니다. 왜냐하면

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
.

dbo.proc_profile_searchuser 에 대한 코드를 열고 dbo.profile_searchusertermstats 테이블 dbo.profile_searchusertermstats 테이블이 있습니다. > ', 그러나 테이블 dbo.profile_searchusertables - 마지막 이름을 мурадов'으로 저장합니다. 나는 가치를 바꿨다. '???????' dbo.profile_searchusertermstats 테이블에서 'мурадов' dbo.proc_profile_searchuser - 검색 매개 변수로 검색 매개 변수로 'мурадов'로 발견되었습니다! userprofilemanager.search () 및 사용자 프로필 관리 페이지도 찾았습니다. 그러나 내 프로필을 편집하고 저장하면 내 러시아 가치가 다시 '????????'으로 될 것입니다.

SQL Server의 데이터 정렬 (Latin1_General_ci_as_ks_ws)의 데이터 정렬에 문제가 있고 SQLServer를 제거하고 Cyrillic_General_CI_AS로 Collation으로 설치합니다. 그러나 모든 SharePoint 데이터베이스는 Latin1_General_CI_AS_KS_WS 정렬으로 생성되었습니다.

이제, 나는 붙어있다. 나는 이것과 정확히 무엇을 해야하는지 전혀 모르며 도움이 필요합니다.

upd. 나는 러시아어 팩으로 Windows Server 2012 Stndart로 작업하고 있습니다. 또한 OS에서 러시아어 로켈을 설정합니다 (심지어 나는 영어로 로케일을 변경하십시오) - 도움이되지 않습니다, 시도)

upd2. 프로필 값을 sql_variant로 저장 하고이 열이 nvarchar (4000)로 변환 될 때 ( 'мурадов') 변환을 잘못 ( '???)으로 변환 할 때 테이블 userProfileValue를 발견했습니다. ???? ''). 내가 다음을 실행 해보도록해도 : 'Мурадов'를 선택하십시오 - 결과 '??????',하지만 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.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top