跳转到主内容
Waters China

为什么某些 Microsoft 补丁程序会导致 UNIFI 出现问题?- WKB12928

环境

  • UNIFI 1.5/1.5.1
  • UNIFI 1.6/1.6.1
  • UNIFI 1.7/1.7.1
  • UNIFI 1.8/1.8.1

答案

以下是与结构问题有关的较高级别的信息,这些结构问题可导致与某些 Windows 时区更新不兼容。


UNIFI 和时区处理


UNIFI 在设计上采用的方式是在用户的本地时区中存储和显示时间戳。存储此信息所用的数据类型为 Oracle 数据“TIMESTAMP(7) WITH TIME ZONE”。但是,当向用户显示这些值时,它们会将 Oracle 时区转化成 Windows 时区。在数据库中存储数据时也会出现这种转换。它在具有 Windows 时区的客户端计算机上启动,转化成 Oracle 时区后再在数据库中进行存储。

Windows 和 Oracle 时区之间的转换十分有必要,因为这两个系统使用不同的时区列表和说明。UNIFI 根据将 Windows 时区映射到 Oracle 时区的“目录”执行转换。该目录由 UNIFI 维护,必须在每次 Oracle 或 Windows 更新其时区列表时进行更新。没有更新目录会导致 UNIFI 出错,最终导致数据不一致。

Microsoft 可以随时发布时区更新,因为这些更改是在全球范围内进行的。以前,Microsoft 会将这些版本作为单独的 Windows 更新发布,这些更新可以从系统中忽略或删除从而解决问题。Microsoft 的新策略是将这类更新与其它按月发布的重要补丁捆绑在一起,使此问题更受重视。

此问题已经在 1.8.2 之前的 UNIFI 版本的多个 Windows 更新中确定,且需要补丁来更新目录。UNIFI 1.8.2 已更新,可以反映时区的最新变化;但新更新也有可能会影响 UNIFI 1.8.2。此问题可使用缺陷编号 US1#206946 进行追踪。

Waters 认为这是一个可以改进的结构设计,并计划在以后的版本中优先考虑解决此问题。

附加信息