通过SQL进行数据库读/写冲突

时间:2014-06-09 22:10:51

标签: sql database visual-studio-2010 ms-access

由于使用Visual Studio 2010作为我的IDE和编译器时的简单性和GUI,我有一个用VB编写的程序。在这个计划中,我建立了一个"票务"系统中,我中心约有40名用户有权向我的同事提交门票,我可以提供IT或设施帮助。

此系统使用SQL作为语言在本地服务器上使用访问数据库。问题是我们很少发生两个用户试图写一个"票"同时到数据库或从数据库同时拉取数据报告,并在其中一个用户上崩溃。我使用"尝试,捕捉,最后"阻止"未处理的异常错误"并且程序设置应该是"未处理的异常错误"发生它自动关闭。另一个问题是,一旦发生此冲突,用户就无法再通过程序读取/写入数据库,直到他们重新启动计算机。

考虑到所有这些,我的问题如下,是否有100%的方法可以防止这些冲突的发生(比如在读/写之前检查数据库是否正在使用),如果没有办法可以避免他们被锁定在数据库之外,直到重新启动他们的计算机?

2 个答案:

答案 0 :(得分:0)

假设您正在使用OLEDB,您可以尝试使用易于实现的事务,如开发人员网络文章“{3}}中所述。”

我必须承认我不理解IsolationLevel设置,但在尝试其他可用的隐藏设置之前,请尝试省略它或使用示例中显示的默认设置。

正如Tony建议的那样,转换为SQL-Server是一种更强大(长期)的解决方案,可确保数据完整性,尤其是在您计划添加更多用户时。 MS有一个免费的迁移工具,即使在查询时也能很好地完成工作。有关数据完整性,请参阅Microsoft支持文章中的最后一段:OleDbConnection.BeginTransaction Method

答案 1 :(得分:0)

从这篇文章开始,我已经交换到虚拟MySQL数据库服务器,以更好的速度运行它们。然而,我遇到的问题是通过清理池来解决的。因为在我使用OLEDB的时候,我使用了命令:

OLEDBConnection.ReleaseObjectPool()

它阻止了更多这些计算机被锁定到他们必须重新启动计算机的位置,并防止发生冲突。