C 延迟写入错误

C 延迟写入错误,c,networking,sysadmin,C,Networking,Sysadmin,在过去的几个月里,由于延迟写入错误,我们一直在丢失数据。我在自定义代码和收缩包装应用程序中都遇到过错误。例如,下面的错误消息来自VisualStudio2008关于构建解决方案的部分 Windows-延迟写入失败:Windows无法 保存文件的所有数据 \Vital\Source\Other\ochsph\Done07\lhfinstaller\Release\LHFAI.CAB。这个 数据已经丢失。此错误可能是由于您的 计算机硬件或网络连接。请尝试保存此文件 其他地方 例如,当它出现在Adob

在过去的几个月里,由于延迟写入错误,我们一直在丢失数据。我在自定义代码和收缩包装应用程序中都遇到过错误。例如,下面的错误消息来自VisualStudio2008关于构建解决方案的部分

Windows-延迟写入失败:Windows无法 保存文件的所有数据 \Vital\Source\Other\ochsph\Done07\lhfinstaller\Release\LHFAI.CAB。这个 数据已经丢失。此错误可能是由于您的 计算机硬件或网络连接。请尝试保存此文件 其他地方

例如,当它出现在Adobe、Visual Studio或Word中时,不会造成任何伤害。主要的问题是当我们的自定义应用程序(将数据库文件中的数据写入网络共享的纯C应用程序)出现这种情况时

从程序的角度来看,写入成功。它删除源数据,并继续下一条记录。几分钟后,Windows弹出一条错误消息,指出发生了延迟写入,数据丢失


我的问题是,我们可以做些什么来帮助我们的网络/服务器团队隔离和纠正问题(阅读,让他们相信问题是真实的。简单地告诉他们很多次还没有说服他们),你对我们如何编写以避免数据丢失有什么建议吗?

在Windows上写道,与任何现代操作系统一样,在操作系统开始使用之前,数据不会被发送到磁盘。这是一个巨大的性能胜利,但问题(正如您所发现的)是您无法在写入时检测到错误

每个执行异步写入的操作系统还提供了将数据强制到磁盘的机制。在Windows上,or函数将实现此功能。(一个用于
句柄
s,另一个用于文件描述符。)

请注意,您必须检查每次磁盘写入的返回值,以及这些同步功能的返回值,以确保将数据写入磁盘。还要注意的是,这些函数会阻塞并等待数据到达磁盘——即使您正在向网络服务器写入数据——因此速度可能会很慢。在您真正需要将数据推送到稳定存储之前,不要呼叫他们


有关更多信息,请参阅。

Windows上的写操作与任何现代操作系统一样,在操作系统开始操作之前,不会真正发送到磁盘。这是一个巨大的性能胜利,但问题(正如您所发现的)是您无法在写入时检测到错误

每个执行异步写入的操作系统还提供了将数据强制到磁盘的机制。在Windows上,or函数将实现此功能。(一个用于
句柄
s,另一个用于文件描述符。)

请注意,您必须检查每次磁盘写入的返回值,以及这些同步功能的返回值,以确保将数据写入磁盘。还要注意的是,这些函数会阻塞并等待数据到达磁盘——即使您正在向网络服务器写入数据——因此速度可能会很慢。在您真正需要将数据推送到稳定存储之前,不要呼叫他们


有关详细信息,请参阅。

您的文件系统已损坏或硬盘出现故障。网络/服务器团队应扫描磁盘以修复前者并检测后者。还要检查错误日志,看看它是否告诉您什么。如果错误日志表明无法写入硬件,则需要更换磁盘。

您的文件系统已损坏或硬盘出现故障。网络/服务器团队应扫描磁盘以修复前者并检测后者。还要检查错误日志,看看它是否告诉您什么。如果错误日志表明无法写入硬件,则需要更换磁盘。

通过网络共享写入数据库文件?你比我勇敢@乔纳森,遗留代码,我能说什么?我更愿意将数据写入我们的SQL server,但我们的解决方案必须在商店和全州40多家医院都能工作。最终,它将被基于web的解决方案所取代。在此之前,我们需要防止数据丢失。通过网络共享写入数据库文件?你比我勇敢@乔纳森,遗留代码,我能说什么?我更愿意将数据写入我们的SQL server,但我们的解决方案必须在商店和全州40多家医院都能工作。最终,它将被基于web的解决方案所取代。在此之前,我们需要防止数据丢失。谢谢您的建议!虽然我想解决导致这些问题的潜在问题,但这至少可以防止数据丢失。谢谢你的建议!虽然我想解决导致这些问题的潜在问题,但这至少可以防止数据丢失。谢谢!我会试着让我们的服务器团队看看。我知道他们压缩了有问题的驱动器,以避免购买更多存储空间。我们的办公室提出购买更多存储设备,但被告知“我们没有存储问题,我们有用户问题。”超过1000人使用该服务器作为他们的主要网络共享。谢谢!我会试着让我们的服务器团队看看。我知道他们压缩了有问题的驱动器,以避免购买更多存储空间。我们的办公室提出购买更多的存储设备,但被告知“我们没有存储问题,我们有用户问题。”超过1000人使用该服务器作为他们的主要网络共享。