首页 > 解决方案 > odbc如何允许多个会话访问和修改数据库

问题描述

我正在开发一个使用 ODBC 将数据存储到 2008 R2 Microsoft SQL Server 的 asp.net 网站应用程序。

我对ODBC的理解是,它是一个开放的数据库连接,与数据库的连接可以保持打开状态,在此期间只有“一个连接”可以修改、更新、插入数据库。直到该连接关闭并打开另一个连接。

该应用程序旨在允许多个用户会话同时打开与数据库的连接,并且我看不到任何客户端代码正在处理有关插入或修改数据库的并发问题。

不同会话中的多个用户(例如,三个不同 Web 浏览器上的三个用户)如何能够安全地修改、更新和插入信息到一个数据库中;特别是当所有三个用户同时修改、删除或插入同一行时。数据库是否自动提供锁并等待该锁从一个用户会话释放到下一个用户会话以解决此并发数据访问问题?

标签: c#asp.netsql-serverconcurrency

解决方案


您不能与其他人同时修改同一张表上的同一行。这是 ODBC 连接语句中固有的。例如,UserA 正在更新 Table1 并且 UserB 也在尝试对 Table1 执行更新,如果两个用户之间有共同的行,则 ODBC 将抛出一个错误,并反馈当前被锁定的数据或类似的东西(取决于您如何访问 ODBC)。

无论 ODBC 记录锁的乐观或悲观风格,只有一个用户可以同时对相同的数据进行修改。

但是,如果在某些情况下发生的修改没有发生冲突,则多个用户可以对同一个表进行更改(这将是锁定类型的差异)。

仅供参考 - 这不是一个真正的编码问题。


推荐阅读