在 Sharepoint 2013 上,用户配置文件中的搜索不适用于本地化值

你好!我来自俄罗斯,昨天我试图用俄语搜索用户个人资料。例如,我的姓氏是 Мурадов,帐户名称是 demo\muradov。我可以通过搜索“demo”、“muradov”找到自己,但通过“Мурадов”找不到自己。

enter image description here enter image description here

对于搜索,我使用了中央管理中的“管理用户配置文件”页面,并且 UserProfileManager.Search() 代码中的方法。我决定弄清楚为什么会发生这种情况。

我是反编译的 Microsoft.Office.Server.UserProfiles 组装并看到, UserProfileManager.Search() 方法是使用存储过程 dbo.proc_Profile_SearchUser.

enter image description here enter image description here

管理用户配置文件也使用了这个过程(我用 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_SearchUserTermStats, ,它将我的姓氏存储为 '???????', ,但表 dbo.Profile_SearchUserTables - 将我的姓氏存储为 '穆拉达夫'. 。我更改了价值'???????'到'lomou。 dbo.Profile_SearchUserTermStats 表和呼叫 dbo.proc_Profile_SearchUser - 发现搜索参数为“Мурадов”! UserProfileManager.Search() 和“管理用户配置文件”页面也找到了我。但是,如果我编辑我的个人资料并保存它,我的俄语值将再次变为“??????”。

我想,这个问题出在 SQL Server 的排序规则中(它是 Latin1_General_CI_AS_KS_WS),我删除了 SQLServer 并使用排序规则 Cyrillic_General_CI_AS 安装。但所有共享点数据库都是使用 Latin1_General_CI_AS_KS_WS 排序规则创建的。

现在,我被困住了。我不知道我到底应该做什么,我需要帮助。

UPD。 我使用带有俄语语言包的 Windows Server 2012 Stndart,还在操作系统中设置了俄语区域设置(即使我将区域设置更改为英语(美国) - 它没有帮助,我尝试过)

UPD2。 我发现表 UserProfileValue 将配置文件值存储为 sql_variant,当该列转换为 nvarchar(4000) 时 - 有正确的值 ('Мурадов') 转换为错误的 ('???????')。即使我尝试运行以下命令:选择“截至'?????

有帮助吗?

解决方案

我发现了与此行为相关的错误。修复它们的步骤:

  1. 打开 [dbo].[proc_Profile_SetSearchUserTerms] 程序
  2. 查看 @changedValues 声明(varchar)
  3. 改变程序
    DECLARE @changedValues TABLE (PropertyValue nvarchar(255), Direction int)
  4. 要开心。
许可以下: CC-BY-SA归因
scroll top