Skip to main content
 首页 » 编程设计

c#之锁定表sql server

2024年01月25日28sharpest

我在一个 asp 解决方案中安装了多个 silverlight 应用程序,多个用户可能在同一时间对同一组数据使用同一个应用程序。 Silverlight 应用程序的设计使其从数据库中提取数据,在本地处理数据,并在用户对修改感到满意后将其写回。然而,这样做的问题是,如果两个用户在同一个数据库上使用同一个应用程序,他们将覆盖彼此的更改。

在任何时候都不会有大量用户使用同一个数据库,因为数据库数量众多,而且在任何时候都没有必要让多个用户同时处理同一组数据.我的想法是为单个用户锁定每个表,以独占访问服务器的读/写权限,拒绝任何其他用户访问甚至从有问题的锁定表中读取。

我将如何着手应用和释放表锁?我知道它可以在每个语句的基础上完成,但我需要用户拥有对该数据的完全专有权利。我可以预见的一个问题是释放锁,需要某种超时,所以表不会为一个用户永久锁定。

请您参考如下方法:

我什至不会开始尝试这个,因为你会遇到超过 1 个用户的可怕的并发问题 - 包括 1 个使用多个窗口的用户,或者在他们的系统崩溃后返回等。

处理此问题的一个简单方法是设置时间戳或更改计数,如果自获取数据以来时间戳或更改计数已更改,则警告用户他们将覆盖其他人的工作。从这个起点开始,您可以更进一步,让他们挑选更改、手动复制其他人的更改、比较更改等。