Windows 10 1803的{VFP网络问题

时间:2018-05-18 20:20:51

标签: visual-foxpro

我们在Windows和VFP9 SP2的1803版上遇到了多用户网络文件共享的一些大问题。以下是我们看到的一些问题:

  1. 写入数据库的空白记录。系统将在所有字段中写入包含值的完整记录,但表中的记录为空白。

  2. 在表关闭之前写入但不会为其他用户显示的记录。如果会话A打开一个表并添加5条记录,会话B将看到额外的5条记录,但它们将是空白的,或者看起来包含来自其中前一条记录的数据。会话A关闭表后,数据将显示在其他会话中。

  3. 记录将附加到表格中,最终只会创建以前记录的副本。

  4. 这些似乎都是某种缓存或延迟写入的问题。

    在过去的几天里,我已经在数十个安装中非常一致地看到了这些问题的各种组合。唯一的解决方案是让用户回滚到以前的Windows版本。

    我们已尝试在客户端和服务器计算机上禁用oplock,并且未启用验证脱机文件,但尚未找到解决方案。

    还有其他人见过类似的东西吗?建议?如果我们不弄明白,这可能是一场灾难。

2 个答案:

答案 0 :(得分:3)

所以这就是我们所发现的。这些问题似乎是由KB4103721更新到Windows 1803引起的。我们能够通过删除该更新作为临时解决方案来解决问题。

我们现在发现通过禁用某些SMB缓存参数。

打开powershell管理提示。 (右键单击开始按钮)

执行以下两个命令:

set-smbclientconfiguration -DirectoryCacheLifetime 0
set-smbclientconfiguration -FileInfoCacheLifetime 0

然后您可以运行

get-smbclientconfiguration

验证是否已设置值。

答案 1 :(得分:0)

我通过锁定表解决了这个问题,如果无法锁定表,那么请等到表可用于锁定。有时它会减慢进程,但数据不会丢失。代码在这里

t2 = [INSERT INTO table (fields_list_here) VALUES (fields_value_here)]
IF FLOCK()  && RLOCK
    &t2
    UNLOCK
ELSE
    do while .t.
        IF not FLOCK()  &&RLOCK()
            WAIT WINDOW "Attempting to lock. Please wait ..." NOWAIT
            IF INKEY() = 27 && The loop may be too fast you may not escape. Try putting a parameter "inkey(.1)"
                WAIT WINDOW "Aborting lock operation." NOWAIT
                exit
            ENDIF
        ELSE
            &t2
            UNLOCK
            EXIT 
        ENDIF
    ENDDO
ENDIF