管理通讯簿服务
上一次修改主题: 2012-04-04
通讯簿服务是 Microsoft Lync Server 2010Enterprise Edition Server或 Standard Edition Server 部署的一部分,将默认安装。通讯簿服务使用的数据库 RTCab 和 RTCab1 在 SQL Server 中创建(对于 Enterprise Edition Server,这是后端 SQL Server,对于 Standard Edition Server,这是并置的 SQL Server)。
通讯簿服务器电话号码规范化
Lync Server 2010 需要标准化的 RFC 3966/E.164 电话号码。要使用非结构化或格式不一致的电话号码,Lync Server 依赖通讯簿服务器在将电话号码转交至规范化规则之前对其进行预处理。当使用通讯簿中的电话号码并应用规范化规则后,客户端(如 Microsoft Lync 2010、Microsoft Lync 2010 Phone Edition 和 Microsoft Lync 2010 Mobile)可以使用这些规范化的号码。
如新通讯簿功能中所述,对于以前版本中使用的规范化规则,如果不进行某些调整,可能无法正常使用。由于在规范化规则之前删除了空格和非必需的字符,因此如果正则表达式专门查找已删除的短划线或其他字符,则规范化规则可能失败。应检查规范化规则以确保它们不查找这些非必需字符,或者允许规则在期望字符出现但未出现的情况下正常中止并继续执行。
用户复制程序和通讯簿服务器
通讯簿服务器使用由用户复制程序提供的数据来更新最初从全局地址列表 (GAL) 中获取的信息。用户复制程序将每个用户、联系人和组的 Active Directory 域服务 (AD DS) 属性写入数据库中的 AbUserEntry 表,然后通讯簿服务器将数据库中的用户数据同步至通讯簿服务器文件存储中的文件和通讯簿数据库 RTCab 或 RTCab1。AbUserEntry 表的架构使用两列:UserGuid 和 UserData。UserGuid 是索引列,包含 Active Directory 对象的 16 字节 GUID。UserData 是图像列,包含前面提到的该联系人的所有 Active Directory 域服务 (AD DS) 属性。
用户复制程序通过读取位于 AbUserEntry 表所在的同一基于 SQL Server 的实例的配置表确定要写入的 Active Directory 属性。AbAttribute 表包含三列:ID、Name 和 Flags。该表在数据库安装期间创建。如果 AbAttribute 表为空,用户复制程序将跳过其 AbUserEntry 表处理逻辑。通讯簿服务器属性是动态的,可以从 AbAttribute 表中检索,该表最初在通讯簿服务器激活时由通讯簿服务器写入。
通讯簿服务器激活将使用支持 Lync Server 所需的值填充 AbAttribute 表。下表将显示这些当前值。
ID | Name | Flags |
---|---|---|
1 |
givenName |
0x01400000 |
2 |
Sn |
0x02400000 |
3 |
displayName |
0x03420000 |
4 |
Title |
0x04000000 |
5 |
mailNickname |
0x05400000 |
6 |
Company |
0x06000000 |
7 |
physicalDeliveryOfficeName |
0x07000000 |
8 |
msRTCSIP-PrimaryUserAddress |
0x08520C00 |
9 |
telephoneNumber |
0x09022800 |
10 |
homePhone |
0x0A302800 |
11 |
Mobile |
0x0B622800 |
12 |
otherTelephone |
0x0C302000 |
13 |
ipPhone |
0x0D302000 |
14 |
0x0E500000 |
|
15 |
groupType |
0x0F010800 |
16 |
Department |
0x10000000 |
17 |
Description |
0x11000100 |
18 |
Manager |
0x12040001 |
19 |
proxyAddress |
0x00500105 |
20 |
msExchHideFromAddressLists |
0xFF000003 |
99 |
entryID |
0x99000000 |
ID 列中的数字必须唯一,并且绝对不能重复使用。另外,使 ID 值低于 256 可以节省通讯簿服务器写入的输出文件的空间。然而,最大 ID 值是 65535。Name 列对应于用户复制程序应在 AbUserEntry 表中为每个联系人放入的 Active Directory 属性名称。Flags 列中的值用于定义属性类型。以下类型的通讯簿服务器属性由用户复制程序标识,并由 Flags 列中的值的低位字节指示。
属性 | 说明 |
---|---|
0x0 |
字符串属性。用户复制程序在将此类型存储在 AbUserEntry 表中之前,先将其转换成 UTF-8。 |
0x1 |
二进制属性。用户复制程序不进行任何转换即将此类型存储在 blob 中。 |
0x2 |
字符串属性,但是仅当属性值以“tel:”开头时才包含此类型。此类型主要用于多值字符串属性,特别是 proxyAddresses。在这种情况下,通讯簿服务器仅关注以“tel:”开头的 proxyAddresses 条目。因此,为了节省空间,用户复制程序将仅存储以“tel:”开头的条目。 |
0x3 |
布尔字符串属性,如果为 TRUE,用户复制程序不会将此联系人包含在 AbUserEntry 表中。如果为 FALSE,用户复制程序会将此联系人的属性包含在 AbUserEntry 表中,但不包含具有此标志的特定属性。这是另一种特殊类型,主要用于 msExchHideFromAddressLists 属性。 |
0x4 |
字符串属性,但是仅当属性值以“smtp:”开头并包含“@”符号时才包含此类型。 |
0x5 |
字符串属性,但是仅当属性值以“tel:”或“smtp:”开头并包含“@”符号时才包含此类型。 |
0x100 |
如果设置,则是可针对每个联系人出现多次的多值属性。 |
0x400 |
如果设置,将标识联系人的电子邮件用户帐户名属性。通讯簿服务器使用此标志来标识在电话规范化事件日志条目中显示的属性值。 |
0x800 |
如果设置,将标识联系人的必需属性。仅当在 Active Directory 中存在此属性的值时,通讯簿服务器才会在 AbUserEntry 表中包含用户。如果存在多个必需属性,只需其中一个属性具有值即会在 AbUserEntry 表中包含用户。 |
0x1000 |
如果设置,通讯簿服务器将始终规范化此属性的值。 |
0x2000 |
如果设置并且 UseNormalizationRules CMS 设置为 FALSE,通讯簿服务器将使用 proxyAddresses 中的规范化号码;否则通讯簿服务器的行为将与标志位是 0x1000 时相同。 |
0x4000 |
如果设置,通讯簿服务器不会在 AbUserEntry 表中包含为指定属性设置了此值的对象。例如,如果 msRTCSIP-PrimaryUserAddress 属性设置了此标志位,则不会将具有此属性的联系人写入数据库。 |
0x8000 |
如果设置,通讯簿服务器不会在 AbUserEntry 表中包含没有为指定属性设置此值的对象。如果在一个对象上设置了 0x4000 和 0x8000 标志位,则标志位值设置为 0x4000 的属性优先,并且会在 AbUserEntry 表中排除该对象。 |
0x10000 |
如果设置,则代表组对象。用户复制程序使用此标志位包含具有 groupType 属性且状态指示组(例如,通讯组列表或安全组)的联系人。 |
0x20000 |
如果设置,用户复制程序将使用此标志位在特定于设备的通讯簿服务器文件(即扩展名为 .dabs 的文件)中包含此属性。 |
筛选通讯簿
通讯簿服务器文件中填充的用户可以基于 AbAttribute 表中列出的特定 Active Directory 域服务 (AD DS)属性进行控制。msExchangeHideFromAddressBook 属性是一个用于筛选的此类属性。这是由 Exchange 架构添加的用户属性。如果将此属性的值设置为 TRUE,Exchange Server 将使用此属性隐藏 Outlook 全局地址列表 (GAL) 中的联系人。同样,如果此属性的值为 TRUE,用户复制程序不会在 AbUserEntry 表中包含该用户,并且该用户不会包含在通讯簿服务器文件中。
可以使用某些标志位定义用于通讯簿服务器属性的筛选器。例如,某些标志位的状态可以将属性标识为包含属性或排除属性。用户复制程序筛选出包含排除属性的联系人,并筛选出不包含包含属性的联系人。
目前,存在三种不同的筛选器。下表列出了这些筛选器。
属性 | 说明 |
---|---|
0x800 |
如果设置,将标识联系人的必需属性。用户复制程序使用此标志位筛选出未包含至少一个必需属性的联系人。OuPathId 是必需属性,始终会设置。因此,应至少设置一个其他必需属性。否则,仍无法将联系人(即具有必需属性 OuPathId 的值)写入数据库。例如,如果将 telephoneNumber 和 homePhone 定义为必需属性,则只有至少具有其中一个属性的联系人才会写入数据库。 |
0x4000 |
如果设置,将标识排除属性。用户复制程序使用此标志位筛选出包含此属性的联系人。例如,如果将 msRTCSIP-PrimaryUserAddress 定义为排除属性,则不会将具有此属性的联系人写入数据库。 |
0x8000 |
如果设置,将标识包含属性。用户复制程序使用此标志位筛选出不包含此属性的联系人。例如,如果将 msRTCSIP-PrimaryUserAddress 定义为包含属性,则仅将具有此属性的联系人写入数据库。 |
注意: |
---|
如果同时设置了 0x4000(排除属性)和 0x8000(包含属性)标志位,0x4000 位将覆盖 0x8000 位,并且将排除联系人。 |
尽管可以筛选通讯簿以仅包含特定用户,但是限制条目不会限制其他用户联系筛选出的用户或查看其状态的能力。通过输入用户的完整登录名,用户始终可以查找通讯簿中不存在的用户,手动向这些用户发送即时消息或者手动发起呼叫。此外,还可以在 Outlook 或 Windows 通讯簿中找到用户的联系人信息。
如果通讯簿文件中包含完整的联系人记录,您将可以使用 Lync 2010 向未配置会话初始协议 (SIP) 的用户发送电子邮件、拨打电话或发起企业语音呼叫(即,如果在服务器中启用了企业语音)。尽管如此,某些组织还是更愿意在通讯簿服务器条目中仅包含已启用 SIP 的用户。通过在以下必需属性的 Flags 列中清除 0x800 位,可以对通讯簿进行筛选,使之仅包含已启用 SIP 的用户:mailNickname、telephoneNumber、homePhone 和 mobile。还可以通过在 msRTCSIP-PrimaryUserAddress 属性的 Flags 列中设置 0x8000(包含属性),对通讯簿进行筛选,使之仅包含已启用 SIP 的用户。这还有助于排除通讯簿文件中的服务帐户。
修改 AbAttribute 表后,可以通过运行 cmdlet Update-CsUserDatabase 命令刷新 AbUserEntry 表中的数据。UR 复制完成后,可以通过手动运行 cmdlet UpdateCsAddressBook 命令更新通讯簿服务器文件存储中的文件。
注意: |
---|
无法以管理方式配置通讯簿服务器所在的前端。在部署期间选定一个前端,通常是部署的第一个前端。出现故障时,通讯簿服务将转移至另一个前端,并且不需要进行管理。此外,存在两个用于通讯簿服务的数据库 - RTCab 和 RTCab1。每天将交替对这两个数据库中的一个进行更新。如果更新 RTCab 数据库,在更新过程中将对 RTCab1 数据库执行查询。第二天,将更新 RTCab1,在更新过程中将对 RTCab 执行查询。这样可确保至少有一个数据库可用于查询和创建通讯簿文件。 |
重要提示: |
---|
如果合并或修改了多林部署或父/子部署的基础结构(例如,在移动至 Lync Server 2010 之前合并基础结构),可能导致某些用户执行通讯簿服务下载和通讯簿 Web 查询时失败。在包含多个域或林的部署中时,将在出现此问题的用户对象上填充 MsRTCSIP-OriginatorSid 属性。为了解决此问题,必须在这些对象上将 MsRTCSIP-OriginatorSid 属性设置为 NULL。 |