4

任何人都可以为以下查询提供帮助或为我提供一些建议。

我有一个 Web 表单(会议纪要)和 8 个需要访问此网页并更新其区域的用户。一个用户可能有多个区域要更新,本质上我想知道如何在用户使用它时锁定网页,以便在 joe bloggs 完成之前没有其他用户可以更新这个网页。

我设置了一个 Active Directory 安全组,以将站点限制为仅限该组用户,但我需要考虑上述问题的解决方案吗?

有没有办法我可以通过 Web 控件或 SQL 来做到这一点?

4

3 回答 3

2

必须有更好的方法来做到这一点。但是,您是否可以引入类似于“UpdateInProgress”(位)的sql表列。任何更新过程都会看到该列,如果为 0,则它更新为 1,之后它保存更改并更新回 0,以便表单可供其他人更新。如果更新过程看到 1,则无法更新 Web 表单,因为更新正在进行中。

我还建议引入另一个名为“UpdateInProgressBy”的列,以检查谁打开了它进行编辑。

于 2012-06-28T13:09:42.897 回答
2

首先,我们必须注意,从用户读取数据、将数据放入页面、更改数据然后尝试写回数据的那一刻起,有很长一段时间。所以我们不是在谈论lockSQL 上的命令,也不是在毫秒内发生的任何其他锁,有助于同步线程,但在这里我们必须同步人和他们写的东西。

如果用户出于任何原因离开页面也会出现问题,这可能会使数据永远锁定。

这个问题可以用两种方法解决。

最简单的是,当用户尝试保存数据时,您必须检查中间是否更改了相同的数据,并警告他,或显示合并对话框,或以编程方式合并或类似的东西 - 我不知道你赢了什么.

困难的方法是不断监控读取和更改数据的页面,并将此监控结果保存在数据库中的一个公共表上,如果一个用户一直停留在页面上,其余用户会收到警告并阅读只有数据,直到用户走。

此监视器必须使用 javasript 制作,并且即使用户放弃该页面也必须知道。

于 2012-06-28T13:15:54.623 回答
0

将事务隔离级别设置为SERIALIZABLE

有关更多信息,请查看此链接:http: //msdn.microsoft.com/en-us/library/ms173763.aspx

于 2012-06-28T13:02:45.520 回答