ユーザープロファイルの検索はSharePoint 2013でローカライズされた値では機能しません
-
10-12-2019 - |
質問
ユーザプロファイルの検索は、SharePoint 2013 でローカライズされた値では機能しません。
こんにちは!私はロシアと昨日から私はロシア語でユーザープロファイルを検索しようとしていました。たとえば、マイラストネームはМурадов、アカウント名はDemo \ Muradovです。私は「デモ」、 "muradov"を検索することによって自分自身を見つけることができますが、 "мурадов"で自分自身を見つけることができません。
検索の場合、Central Antirmanceと userprofilemanager.search()メソッドからの「ユーザープロファイルの管理」ページを使用しました。 私はそれが起こる理由を理解することにしました。
iはdecompile microsoft.office.server.userprofiles アセンブリとSAW、 userprofileManager.search()メソッドはストアドプロシージャを使用しています dbo.proc_profile_searchuser 。
ユーザプロファイルの管理この手順も使用した(SQL Server Profilerで確認しました)。私は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_searchusertattats が '??????? ですが、表 dbo.profile_searchasertables - 私の姓を'мурадов 'として保存します。私は値 '???????を変更しました dbo.profile_searchusertermstats テーブルと呼び出し、 dbo.profile_searchUser を呼び出します - 検索パラメータが 'Мурадов'として見つけました! userprofileManager.search()と「ユーザープロファイルの管理」ページも私を見つけました。しかし、私が自分のプロフィールを編集してそれを保存した場合、私のロシア人の価値観は再び '??????'のようになります。
私は、SQL Serverの照合(Latin1_general_ci_as_s_ws)の照合の問題と考え、SQLServerを削除し、照合Cyrillic_general_ci_asを使ってインストールします。ただし、Latin1_General_CI_AS_KS_WS照合ですべてのSharePointデータベースが作成されました。
今、私は立ち往生しています。私はこれと正確に何をすべきかわかりません、そして私は助けが必要です。
UPD。私はロシア語の言語パックを使ったStndartを使って、私はOSでロシア語のロケールを設定しました(ロケールを英語に変更しています) - それは助けにならない、私試した)
upd2。プロファイル値をsql_variantとして格納するテーブルUserProfileValueを見つけ、この列がnvarchar(4000)に変換したとき - 正しい値( 'мурадов')が間違って変換されます( '??? ???? ')。次のように実行しても 'Мурадов'を選択してください - '??????'として " 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.