适用于: Exchange Server 2007 SP1, Exchange Server 2007
上一次修改主题: 2007-09-05
本主题说明如何通过使用 Microsoft Office Outlook 客户端诊断日志记录并查看事件日志条目,解决与脱机通讯簿 (OAB) 下载有关的问题。除了讨论如何查看事件日志条目之外,本主题还提供与下列 OAB 下载问题有关的详细信息:
脱机通讯簿序列
服务器端地址列表名称
OAB GUID
只要 Outlook 执行完整 OAB 下载,Microsoft Office 2003 Service Pack 1 (SP1) 和 Outlook 2003 Service Pack 2 (SP2) 始终会在应用程序事件日志中生成一个事件。如果此下载由于任何原因而失败,Outlook 将记录事件 ID 27,事件类型为“错误”,并提供一段说明,包含与失败有关的信息。在这种情况下,记录的事件还包含结果错误代码,可以使用该错误代码帮助隔离问题。
通过查看事件日志条目(包括检查错误代码和 OAB 序号)可以解决 OAB 下载问题。然后,可以将 Exchange 服务器上的地址列表的名称与 Outlook 客户端进行比较。
查看事件日志条目
以下示例是用户在缓存 Exchange 模式下初次启动 Outlook 2003 时,记录的事件日志条目的十六进制数据部分。
0000: 01 00 00 00 00 00 00 00 |
0008: 00 00 00 00 75 00 00 00 |
0010: 75 00 00 00 00 00 00 00 |
0018: 00 00 00 00 00 00 00 00 |
0020: e9 fd 00 00 02 a3 48 9b |
0028: ba 12 c4 01 00 00 00 00 |
0030: 00 00 00 00 00 00 00 00 |
0038: 00 00 00 00 00 00 00 00 |
0040: 00 00 00 00 00 00 00 00 |
0048: 00 00 00 00 00 00 00 00 |
0050: 00 00 00 00 00 00 00 00 |
0058: 00 00 00 00 00 00 00 00 |
0060: 00 00 00 00 00 00 00 00 |
0068: 00 00 00 00 00 00 00 00 |
0070: 00 00 00 00 00 00 00 00 |
0078: 00 00 00 00 00 00 00 00 |
0080: 00 00 00 00 00 00 00 00 |
0088: 00 00 00 00 00 00 00 00 |
0090: 5c 00 47 00 6c 00 6f 00 |
0098: 62 00 61 00 6c 00 20 00 |
00a0: 41 00 64 00 64 00 72 00 |
00a8: 65 00 73 00 73 00 20 00 |
00b0: 4c 00 69 00 73 00 74 00 |
00b8: 00 00 00 00 65 38 31 30 |
00c0: 35 35 61 38 2d 62 64 38 |
00c8: 38 2d 34 33 34 62 2d 39 |
00d0: 37 31 37 2d 64 34 33 37 |
00d8: 61 62 34 35 31 35 36 39 |
00e0: 00 65 38 31 30 35 35 61 |
00e8: 38 2d 62 64 38 38 2d 34 |
00f0: 33 34 62 2d 39 37 31 37 |
00f8: 2d 64 34 33 37 61 62 34 |
0100: 35 31 35 36 39 00 |
在所有 OAB 事件日志条目中,数据的第一个字节包含十六进制格式的错误代码。该错误代码指示完整下载的原因。在上一个示例中,数据的第一个字节包含在:
0000: 01 00 00 00 00 00 00 00
在此示例中,第一个字节是 01。
下表提供了对错误代码的说明。
脱机通讯簿错误代码
| 错误代码 | 说明 |
|---|---|
1 |
计算机上没有任何 OAB 文件,或无法打开 OAB 文件。 |
2 |
您手动强制完整下载。 |
3 |
在客户端上无法获取该 OAB 的名称。新建配置文件时会出现这种情况。 |
4 |
在客户端上无法获取该 OAB 的 GUID。 |
5 |
服务器中没有该 OAB 的名称。未期待完整下载会启动或成功完成,但是仍进行了记录。 |
6 |
服务器中没有该 OAB 的 GUID。未期待完整下载会启动或成功完成,但是仍进行了记录。 |
7 |
服务器的 OAB 名称与客户端的 OAB 名称不同。 |
8 |
服务器的 GUID 与客户端的 GUID 不同。如果服务器必须重新生成同名的新 OAB 并丢弃旧的 OAB 文件,可能会发生这种情况。如果 Outlook 客户端在不同的 Active Directory 目录服务林之间移动,也可能会发生这种情况。 |
9 |
客户端的序列号大于服务器的序号。 |
0a (10) |
您需要该 OAB 中的详细信息,但是客户端上没有对应的 OAB 文件。如果您手动强制下载该 OAB,并且清除了“下载上次发送/接收以来的更改”复选框,可能会发生这种情况。 |
0b (11) |
服务器中至少缺少一个增量 OAB 文件。 |
0c (12) |
要下载的增量文件的总和可能未超过完整 OAB 文件的八分之一。 |
0d (13) |
您将“允许 SRS 完整 OAB 下载”注册表项设置为 1,并且“发送/接收”设置已设置为始终执行完整下载。 |
0e (14) |
系统上未安装该 OAB 的区域设置,并且您进行过手动完整下载。通常,Outlook 每个月更新一次通讯簿,或在您手动下载时进行更新。Outlook 使用这些方法更新通讯簿,以避免每天执行完整下载。 |
0f (15) |
由于某种原因,对 OAB 文件应用增量文件失败。 |
可以使用错误代码确定出现 0f 错误的原因。确定了根本原因之后,可以采取措施来解决问题。为此,请执行下列步骤:
在应用程序事件日志中,找到“说明”部分包含“正在启动 OAB 下载”的事件 ID 27。
在事件的“说明”部分,找到可能包含下列部分或全部断言的原因代码:
0050: 7a 65 61 7a 61 74 61 7a zeazataz
0058: 70 69 61 7a 7a 65 61 7a piazzeaz
0060: 61 74 61 7a 70 69 61 7a atazpiaz
使用下列方式解释这些原因代码:
“zaez”是“签名不匹配”的断言。
“zata”是 MAPI_E_UNEXPECTED_ID 的断言。
“zaip”意味着“HrApplyOABDiffs 失败。必须进行完整下载”。
根据事件日志中的数据,您可能需要安装 Microsoft 知识库文章 895476 Outlook may receive a full download instead of an incremental download when Outlook downloads the offline address book in Exchange Server 2003中所述的 Exchange 修补程序。
下表提供了这些事件中可能出现的一些说明的示例。
Outlook 2003 事件日志说明示例
| 事件日志条目的说明字段 | 说明 |
|---|---|
“OAB ModDif 失败。(事件数据中的细节记录)” “OAB(脱机通讯簿)文件无效。请替换为存根。(事件数据中最后的错误)” |
指示 Outlook 无法执行增量 OAB 下载。发生此事件时,Outlook 将尝试进行完整 OAB 下载。 |
“正在启动 OAB 下载” |
指示正在启动完整 OAB 下载,并指示下载原因。 |
“OAB 下载已成功” |
指示完整 OAB 下载已成功完成。 |
除了结果错误代码之外,还可以从应用程序事件日志数据中收集以下信息:
OAB 序号
用于填充脱机地址列表的服务器端地址列表名称
完整 OAB 文件下载的 GUID
可以使用此信息帮助确定发生与差异 OAB 下载或完整 OAB 下载有关的特定行为的原因。
脱机通讯簿序号
Outlook 和 Exchange Server 均使用 OAB 序号确定要下载到 Outlook 的 OAB 文件。根据客户端上发现的序号以及差异文件的累积大小,可能会进行差异下载或完整下载。可以通过检查所记录事件的数据部分来验证序号。
OAB 错误代码位于事件数据的第一行(偏移 0001)。客户端和服务器的 OAB 序号位于事件日志数据的第二行(偏移 0008)。以下是此类数据的示例:
0000: 09 00 00 00 00 00 00 00 ........
0008: 9b 00 00 00 9a 00 00 00 ........
在此示例中,通讯簿错误代码为 09,或缩写为 9。如本主题第一个表中所示,此错误代码指示客户端的序号大于服务器的序号。客户端序号包含在前四个字节(此示例中为 9b),服务器序号包含在第二个四字节(此示例中为 9a)。
服务器端地址列表名称
如果客户端的 OAB 和 Exchange 服务器的脱机地址列表的名称不匹配或丢失,则进行完整 OAB 下载。在这种情况下,生成的结果错误代码为 3、5 或 7。可以通过检查所记录事件的数据部分来验证 OAB(和脱机地址列表)的名称。
Exchange Server 用于填充服务器上的脱机地址列表的列表名称位于事件数据的第 19 行(偏移 0090)。Outlook 使用的列表名称从事件数据的第 24 行(偏移 00b8)开始。以下是此类数据的示例:
0090: 5c 00 47 00 6c 00 6f 00 \.G.l.o.
0098: 62 00 61 00 6c 00 20 00 b.a.l. .
00a0: 41 00 64 00 64 00 72 00 A.d.d.r.
00a8: 65 00 73 00 73 00 20 00 e.s.s. .
00b0: 4c 00 69 00 73 00 74 00 L.i.s.t.
00b8: 00 00 5c 00 47 00 6c 00 .\.G.l.
00c0: 6f 00 62 00 61 00 6c 00 o.b.a.l.
00c8: 20 00 41 00 64 00 64 00 .A.d.d.
00d0: 72 00 65 00 73 00 73 00 r.e.s.s.
00d8: 20 00 4c 00 69 00 73 00 .L.i.s.
00e0: 74 00 00 00 38 62 32 61 t...e810
在此示例中,默认全局地址列表 (GAL) 用于脱机地址列表。
脱机通讯簿 GUID
除了使用相匹配的地址列表名称之外,Exchange 和 Outlook 均使用相匹配的 GUID 来确保保持同步。如果 Outlook OAB GUID 与 Exchange 使用的 GUID 不匹配,将进行完整 OAB 下载。生成的 OAB 结果错误代码为 4、6 或 8。可以通过检查事件数据来验证 OAB GUID。
Exchange Server 使用的 GUID 从偏移 00b8 开始。Outlook 使用的 GUID 从偏移 00e0 开始。以下是此类数据的示例:
00b8: 00 00 00 00 65 38 31 30 ....e810
00c0: 35 35 61 38 2d 62 64 38 55a8-bd8
00c8: 38 2d 34 33 34 62 2d 39 8-434b-9
00d0: 37 31 37 2d 64 34 33 37 717-d437
00d8: 61 62 34 35 31 35 36 39 ab451569
00e0: 00 65 38 31 30 35 35 61 .e81055a
00e8: 38 2d 62 64 38 38 2d 34 8-bd88-4
00f0: 33 34 62 2d 39 37 31 37 34b-9717
00f8: 2d 64 34 33 37 61 62 34 -d437ab4
0100: 35 31 35 36 39 00 51569
如果 Outlook OAB 和 Exchange 计算机的 GUID 不匹配,则需要删除现有的 OAB 文件并执行完整 OAB 下载。
详细信息
有关 OAB 的详细信息,请参阅管理脱机通讯簿。