由于使用Visual Studio 2010作为我的IDE和编译器时的简单性和GUI,我有一个用VB编写的程序。在这个计划中,我建立了一个"票务"系统中,我中心约有40名用户有权向我的同事提交门票,我可以提供IT或设施帮助。
此系统使用SQL作为语言在本地服务器上使用访问数据库。问题是我们很少发生两个用户试图写一个"票"同时到数据库或从数据库同时拉取数据报告,并在其中一个用户上崩溃。我使用"尝试,捕捉,最后"阻止"未处理的异常错误"并且程序设置应该是"未处理的异常错误"发生它自动关闭。另一个问题是,一旦发生此冲突,用户就无法再通过程序读取/写入数据库,直到他们重新启动计算机。
考虑到所有这些,我的问题如下,是否有100%的方法可以防止这些冲突的发生(比如在读/写之前检查数据库是否正在使用),如果没有办法可以避免他们被锁定在数据库之外,直到重新启动他们的计算机?
答案 0 :(得分:0)
假设您正在使用OLEDB,您可以尝试使用易于实现的事务,如开发人员网络文章“{3}}中所述。”
我必须承认我不理解IsolationLevel设置,但在尝试其他可用的隐藏设置之前,请尝试省略它或使用示例中显示的默认设置。
正如Tony建议的那样,转换为SQL-Server是一种更强大(长期)的解决方案,可确保数据完整性,尤其是在您计划添加更多用户时。 MS有一个免费的迁移工具,即使在查询时也能很好地完成工作。有关数据完整性,请参阅Microsoft支持文章中的最后一段:OleDbConnection.BeginTransaction Method
答案 1 :(得分:0)
从这篇文章开始,我已经交换到虚拟MySQL数据库服务器,以更好的速度运行它们。然而,我遇到的问题是通过清理池来解决的。因为在我使用OLEDB的时候,我使用了命令:
OLEDBConnection.ReleaseObjectPool()
它阻止了更多这些计算机被锁定到他们必须重新启动计算机的位置,并防止发生冲突。