sql-server - 存储的数据显然在没有警告的情况下消失了
问题描述
摘要: CRUD 查询在我的 VB6 + SQL 2000 应用程序中没有可靠地持久化,导致数据丢失。如何/我改变什么来解决这个行为?我可以在不坚持时始终坚持或显示错误,但目前问题默默地发生。
我不确定要在此处包含哪些来源,欢迎提出建议。
细节:
我继承了一个非常古老(20 年以上)的桌面应用程序,用 VB6 编写并使用 SQL 2000 数据库来存储其数据。
似乎有时(尚未确定明确的原因,它似乎是随机发生的)通过 INSERT / UPDATE 写入数据库的数据没有持久化,而是保存在某种缓冲区中:选择数据表明一切都是正常,一切正常,除非应用程序关闭并重新打开,数据不存在。
为了进一步澄清这个问题,这里有一个简化的场景:
第一天
. 应用程序启动
. 应用程序执行一堆 SELECT 来查询当天的初始数据
. 用户在应用程序中输入一些数据并按下“保存”按钮,在幕后在数据库中执行一些插入/更新以(显然)持久化数据。
. 在操作过程中,所有新输入的数据都可以处理并正常显示
. 晚上,用户运行应用程序的一项功能,该功能充当每日摘要(这里涉及到很多 SELECTing),他们可以看到他们处理的所有数据,一切看起来都很正常。
. 应用程序已关闭(更多 CRUD 发生在幕后)
第 2 天
. 应用程序启动
. 应用程序执行一堆 SELECT 来查询当天的初始数据
. 用户可以看到初始数据并没有与他们前一天所做的“总结”
. DBA 的进一步检查表明,昨天的一大块数据不存在
用户和事件查看器(或其他任何东西)都不会显示有关此行为的错误。
我不知道问题可能出在哪里,搜索互联网提供的信息很少(也许技术太旧,或者问题很少见?)
显然,我可以解决这个问题,结果是数据始终保持不变并且用户很满意。当数据不持久时(无论原因是什么),应用程序显示错误并阻止操作,我也可以接受。
我欢迎有关将哪些信息附加到问题以帮助解决问题的建议(代码非常大,我不确定什么是相关的)。
根据评论展开
很难知道数据是否在第 1 天出现在应用程序之外,我们必须不断监控应用程序中正在执行的操作并比较数据库(因为没有明显的迹象表明问题正在发生,没有错误,没有什么)。
数据库权限不应该是相关的,应用程序工作得很好,然后突然丢失了一些数据,然后一切都很好。
解决方案
推荐阅读
- c++ - 读取 mifare 卡块并将其块的一部分与一些文本进行比较
- java - 删除 ListView 项目 - Android
- python - Keras LSTM input_shape 的问题:预期 lstm_1_input 的形状为 (500, 2) 但得到的数组的形状为 (500, 5)
- java - 如何在JComboBox中显示信息,但后台操作选择不同的信息
- visual-studio-code - 打开文件时打开 Web 视图
- java - 从 Camel 连接到 JBoss EAP6 上的队列
- php - 为什么这不保存到数据库?
- r - 创建一个仅显示获胜团队的新列
- javascript - 带有 requestAnimationFrame() 的画布动画
- xml - 如何访问在不同视图中定义的片段?