我们就称对此数据源进行了锁定。


SQL Server中我们可以对这些对象进行锁定,具体如图所示,根据具体的情况选择合适的对象进行锁定。

sql server 数据库id12 锁类型 超时 sql的锁_sql

 

独占锁锁定的资源只允许进行锁定操作的程序使用,其它任何对它的操作均不会被接受。当进行Insect、Update和delete命令时SQL Server 会自动使用独占锁。2‘共享锁锁定的资源可以被其它用户读取,但其它用户不能修改它。当执行select命令时,SQL Server 对对象加共享锁。3、更新锁是为了防止死锁而设立的,当更新数据时,先加上更新锁锁定,数据可以被读取,但不能修改,更新数据时自动变为独占锁。


死锁是在多用户或多进程状况下,为使用同一资源而产生的无法解决的争用状态。通俗的讲,两个用户各占用一个资源,但都想用对方资源,而不放弃自己的资源,一直等待对方放弃自己资源,这样一直相互耗着。在SQL Server中死锁是一个十分严重的问题,它造成了资源的大量浪费,甚至使系统崩溃。


        死锁的危害很大,我们解决的原则为选一个进程结束,进行事务回滚,并发送错误信息。为了防止死锁的产生我们需要遵守一下原则:


1、尽量避免并发地执行涉及到修改数据的语句。


2、要求每个事务一次就将所有要使用的数据全部加锁,否则就不予执行。


3、预先规定一个封锁顺序,所有的事务都必须按这个顺序对数据执行封锁。例如不同的过程在事务内部对对象的更新执行顺序应尽量保持一致。


4、每个事务的执行时间不可太长,对程序段长的事务可考虑将其分割为几个事务。


        


      SQL Server提供了锁,用来解决资源的访问,我们要合理的利用锁,提高我们的效率,避免死锁的产生,造成系统资源的浪费。