锁定表sql server

Sim*_*ths 1 c# sql sql-server silverlight

我在asp解决方案中使用了多个silverlight应用程序,多个用户可能在任何时候在同一组数据上使用相同的应用程序.Silverlight应用程序的设计使得它们从数据库中提取数据,在本地处理数据,并在用户对其修改感到满意后将其写回.但问题是,如果两个用户在同一个数据库上使用相同的应用程序,那么它们将覆盖彼此的更改.

在任何时候都不会有大量用户使用相同的数据库,因为有许多数据库,并且在任何时候不止一个用户应该处理同一组数据并不重要.我的想法是锁定每个表以便单个用户具有对服务器的读/写的独占访问权,从而拒绝任何其他用户访问甚至从所讨论的锁定表中读取.

我将如何应用表锁并释放它们?我知道它可以在per语句的基础上完成,但我需要用户拥有对这些数据的完全专有权.我可以预见的一个问题是释放锁,需要某种超时,因此该表不会永久锁定给一个用户.

Jon*_*nna 6

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

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