任何人都可以为以下查询提供帮助或为我提供一些建议。
我有一个 Web 表单(会议纪要)和 8 个需要访问此网页并更新其区域的用户。一个用户可能有多个区域要更新,本质上我想知道如何在用户使用它时锁定网页,以便在 joe bloggs 完成之前没有其他用户可以更新这个网页。
我设置了一个 Active Directory 安全组,以将站点限制为仅限该组用户,但我需要考虑上述问题的解决方案吗?
有没有办法我可以通过 Web 控件或 SQL 来做到这一点?
必须有更好的方法来做到这一点。但是,您是否可以引入类似于“UpdateInProgress”(位)的sql表列。任何更新过程都会看到该列,如果为 0,则它更新为 1,之后它保存更改并更新回 0,以便表单可供其他人更新。如果更新过程看到 1,则无法更新 Web 表单,因为更新正在进行中。
我还建议引入另一个名为“UpdateInProgressBy”的列,以检查谁打开了它进行编辑。
首先,我们必须注意,从用户读取数据、将数据放入页面、更改数据然后尝试写回数据的那一刻起,有很长一段时间。所以我们不是在谈论lock
SQL 上的命令,也不是在毫秒内发生的任何其他锁,有助于同步线程,但在这里我们必须同步人和他们写的东西。
如果用户出于任何原因离开页面也会出现问题,这可能会使数据永远锁定。
这个问题可以用两种方法解决。
最简单的是,当用户尝试保存数据时,您必须检查中间是否更改了相同的数据,并警告他,或显示合并对话框,或以编程方式合并或类似的东西 - 我不知道你赢了什么.
困难的方法是不断监控读取和更改数据的页面,并将此监控结果保存在数据库中的一个公共表上,如果一个用户一直停留在页面上,其余用户会收到警告并阅读只有数据,直到用户走。
此监视器必须使用 javasript 制作,并且即使用户放弃该页面也必须知道。
将事务隔离级别设置为SERIALIZABLE
有关更多信息,请查看此链接:http: //msdn.microsoft.com/en-us/library/ms173763.aspx