Ste*_*ane 5 server-message-block windows-server-2008-r2
我知道这听起来像是一个编程问题,但实际上不是。请耐心等待:
我有一个客户遇到了一个我无法解释的奇怪问题:程序使用共享 SMB 驱动器(Windows 2008R2 服务器)上的文件以共享模式打开。
在文件内部执行更新之前,程序将使用LockFile锁定特定的药水,读取数据,将所需的更改写入这些部分,然后解锁它们。
这样做是为了确保同一程序的多个实例可以覆盖彼此的更改。
在我的客户案例中,该程序(多年来在所有其他位置运行良好)成功锁定文件,但随后对同一句柄上的 ReadFile 调用失败并且 GetlastError 返回错误 64 The specified network name is no longer available
因此,我的问题:
Windows SMB 客户端或服务器中是否有一些设置可能会导致此类情况?
对我来说它看起来像一个乐观锁,但默认情况下 windows 不做乐观锁(它做机会锁)。
我的第一个怀疑是这个问题是由防病毒软件 (Kaspersky) 引起的,但站点管理员发誓所有 AV 都排除了此网络路径,无论是在客户端还是在文件服务器上。
客户端操作系统是 Windows XP、7、2003 和 2008R2(通过终端服务)的混合。它似乎只发生在负载较重的时候(早上每个人进来或晚上每个人都退出)。
小智 0
恕我直言,这确实是一个编程问题,但通过降级操作系统可能会恢复到之前“工作”的方式。Windows 7 在 CIFS 中引入了一种新的锁定机制,这几乎肯定是导致您的问题的原因。这意味着您要么需要更新程序以使用新的锁定方案(编程问题),要么需要降级或找到兼容性修复程序(管理问题)。
http://en.wikipedia.org/wiki/Server_Message_Block
归档时间: |
|
查看次数: |
291 次 |
最近记录: |