脱机通讯簿疑难解答
上一次修改主题: 2005-10-11
本主题讨论用于解决与脱机通讯簿下载相关的问题的最佳实践。对于如何通过检查错误代码和脱机通讯簿序号,并通过比较 Exchange 服务器和 Outlook 客户端上的地址名称列表来解读事件日志条目,本主题提供了有关的详细信息。
完整的脱机通讯簿下载
只要 Outlook 执行了完整的脱机通讯簿下载,Microsoft® Office Outlook® 2003 Service Pack 1 (SP1) 和 Outlook 2003 SP1 就会在应用程序事件日志中生成一个事件。如果此类完整的脱机通讯簿下载由于任何原因失败,则 Outlook 会记录事件 ID 27,其中包括错误的事件类型以及失败信息说明。在此情况下,记录的事件还包括可用于帮助找到问题的结果错误代码。
以下是用户首次以缓存 Exchange 模式启动 Outlook 2003 进行时记录的一个事件日志条目的十六进制数据部分的示例:
0000: 01 00 00 00 00 00 00 00 ........
0008: 00 00 00 00 75 00 00 00 ....u...
0010: 75 00 00 00 00 00 00 00 u.......
0018: 00 00 00 00 00 00 00 00 ........
0020: e9 fd 00 00 02 a3 48 9b éý...£H?
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 \.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 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
在所有脱机通讯簿事件日志条目中,数据的第一个字节包含十六进制的错误代码。错误代码表明了完全下载的原因。在上面的示例中,数据的第一个字节包含在以下代码中:
0000: 01 00 00 00 00 00 00 00 ........
在此示例中,第一个字节是 01。下表提供了错误代码的说明。
脱机通讯簿错误代码
错误代码 | 说明 |
---|---|
1 |
您的计算机上没有任何脱机通讯簿文件,或者无法打开脱机通讯簿文件。 |
2 |
您手动强制执行了完全下载。 |
3 |
在客户端上无法获得脱机通讯簿的名称。新建配置文件时会出现此问题。 |
4 |
在客户端上无法获得脱机通讯簿的 GUID。 |
5 |
服务器中缺少脱机通讯簿的名称。不希望启动或成功进行完全下载,但是仍记录它。 |
6 |
服务器中缺少脱机通讯簿的 GUID。不希望启动或成功进行完全下载,但是仍记录它。 |
7 |
服务器的脱机通讯簿名称和客户端的脱机通讯簿名称不同。 |
8 |
服务器的 GUID 和客户端的 GUID 不同。如果服务器必须重新生成同名新脱机通讯簿并丢弃旧的脱机通讯簿文件,则会发生此问题。如果在不同 Active Directory® 目录服务林之间移动 Outlook 客户端,则也会发生此问题。 |
9 |
客户端的序列号大于服务器的序号。 |
0a (10) |
您需要脱机通讯簿中的详细信息,但您的客户端上没有相应的脱机通讯簿文件。如果手动强制执行脱机通讯簿的下载,然后清除了“下载上次发送/接收之后所做的更改”复选框,则可能发生此问题。 |
0b (11) |
服务器上至少缺少一个增量脱机通讯簿文件。 |
0 c (12) |
要下载的增量文件的总和不能大于完整脱机通讯簿文件的八分之一。 |
0d (13) |
已将 Allow SRS Full OAB Download 注册表项设置为 1,并且发送/接收设置被设置为始终执行完全下载。 |
0e (14) |
您未在系统上安装该脱机通讯簿的区域设置,并且执行了手动完全下载。通常,Outlook 一个月更新一次通讯簿,或在您手动执行下载时更新通讯簿。Outlook 使用这些方法来更新通讯簿,以避免发生会导致每天执行一次完全下载的情况。 |
0f (15) |
由于某种原因,将增量文件应用到脱机通讯簿文件失败。 |
除了结果错误代码之外,还可以从应用程序事件日志数据中收集以下信息:
- 脱机通讯簿序号。
- 被用来填充脱机地址列表的服务器端地址列表名。
- 用于完整脱机通讯簿文件下载的 GUID。
下表提供这些事件中可能出现的部分说明的示例。
Outlook 2003 事件日志示例说明
事件日志条目说明字段 | 含义 |
---|---|
“OAB ModDif 失败。(详细信息记录在事件数据中。)”或“OAB (脱机通讯簿)文件无效。已用存根进行替换。(最后的错误在事件数据中。)” |
表明 Outlook 无法执行增量脱机通讯簿下载。发生此情况时,Outlook 将尝试完整的脱机通讯簿下载。 |
“正在启动 OAB 下载” |
表明完整的脱机通讯簿下载正在启动,并表明下载的原因。 |
“OAB 下载成功” |
表明完整脱机通讯簿下载已成功完成。 |
脱机通讯簿序号
Outlook 和 Exchange Server 都使用脱机通讯簿序号来确定要下载到 Outlook 的脱机通讯簿文件。发生脱机通讯簿的差异下载还是完全下载,这取决于在客户端上找到的序号和差异文件的累计大小。可以通过检查记录的事件的数据部分来验证序号。
可在事件数据的第一行(偏移量 0001)上找到脱机通讯簿错误代码。可在事件数据的第二行(偏移量 0008)上找到客户端和服务器的脱机通讯簿序号。以下是这些数据的示例:
0000: 09 00 00 00 00 00 00 00 ........
0008: 9b 00 00 00 9a 00 00 00 ........
在本示例中,通讯簿错误代码是 09,或就是 9。如本主题中第一个表所示,此错误代码表明客户端的序号大于服务器的序号。客户端序号包含在开头的四个字节中(在本例中为 9b),服务器序号在其后的四个字节中(在本例中为 9a)。
服务器端地址列表名
在客户端的脱机通讯簿和 Exchange Server 计算机的脱机地址列表名不匹配或缺失时,会发生完整的脱机通讯簿下载。在这种情况下,生成的结果错误代码是 3、5 或 7。可通过检查记录的事件的数据部分来验证脱机通讯簿(和脱机地址列表)名称。
Exchange Server 用于填充服务器上脱机地址列表的列表名称可在事件数据的第十九行(偏移量 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 的脱机通讯簿 GUID 和 Exchange Server 计算机使用的 GUID 不匹配,则会发生完整的脱机通讯簿下载。生成的脱机通讯簿结果错误代码是 4、6 或 8。可通过检查事件数据来验证脱机通讯簿 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 脱机通讯簿的 GUID 和 Exchange Server 计算机的 GUID 不匹配,则需要删除现有脱机通讯簿文件并执行完整脱机通讯簿下载。或者,您可以暂存文件。有关暂存文件的信息,请参阅 Outlook 2003 部署方案中的“脱机通讯簿的暂存”。