ユーザープロファイルの検索はSharePoint 2013でローカライズされた値では機能しません

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/80890

質問

ユーザプロファイルの検索は、SharePoint 2013 でローカライズされた値では機能しません。

こんにちは!私はロシアと昨日から私はロシア語でユーザープロファイルを検索しようとしていました。たとえば、マイラストネームはМурадов、アカウント名はDemo \ Muradovです。私は「デモ」、 "muradov"を検索することによって自分自身を見つけることができますが、 "мурадов"で自分自身を見つけることができません。

Enter Enter Image説明 画像の説明がここにある

検索の場合、Central Antirmanceと userprofilemanager.search()メソッドからの「ユーザープロファイルの管理」ページを使用しました。 私はそれが起こる理由を理解することにしました。

iはdecompile microsoft.office.server.userprofiles アセンブリとSAW、 userprofileManager.search()メソッドはストアドプロシージャを使用しています dbo.proc_profile_searchuser

Enter Image説明 画像の説明を入力しますここで

ユーザプロファイルの管理この手順も使用した(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:

  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