sqlserver2008锁表详细(锁定数据库表)

锁定数据库表
复制代码代码如下所示:
SELECT * FROM表(HOLDLOCK)

注意:锁定数据库的表之间的差异
复制代码代码如下所示:
SELECT * FROM表(HOLDLOCK)


其他事务可以读取表,但不能更新和删除。
复制代码代码如下所示:
SELECT * FROM表(TABLOCKX)


其他事务不能读取表、更新和删除。

SELECT语句中锁定选项的函数描述

SQL Server提供了一个强大的和完整的协助执行的并发性和高性能的数据库锁机制。用户可以使用默认的SQL Server和SELECT语句中取得预期效果的锁定选项的设置。本文介绍了各种锁定选项中的SELECT语句和相应的功能指令。

功能描述:

NOLOCK(解锁)

选择此选项后,SQL Server不添加任何锁时,它读取或修改数据。在这种情况下,为用户在阅读完成的交易数据是可能的(提交或回滚事务)(回滚),所谓的脏数据。

HOLDLOCK(按住锁)

当选择此选项时,SQLServer将共享锁保留到整个事务的结尾,并不会在途中释放。

更新锁(修改锁)

当选择此选项时,SQLServer在读取数据时使用修改过的锁替换共享锁,并将锁保留到整个事务或命令的结尾。使用此选项确保多个进程可以同时读取数据,但只有进程可以修改数据。

TABLOCK(锁)

选择此选项后,SQL Server将共享锁,直到提供整个表结束时的顺序。此选项确保其他进程只能读取数据,但不能修改数据。

paglock(页锁)

此选项是默认选项,当选中时,SQLServer使用共享页锁。

TABLOCKX(排表锁)

选择此选项后,SQL Server将位于独占锁的整个表中,直到事务或命令结束。这将阻止其他进程读取或修改表中的数据。

HOLDLOCK持有共享锁,直到整个交易完成后,应立即释放时,锁定的对象是不需要的,等于可序列化事务隔离级别。

NOLOCK语句不发布共享锁时,它被执行时,允许脏读等于未提交读隔离级别

paglock使用多页锁,表锁的使用

READPAST让SQL Server跳过任何锁定线及执行交易。它适用于读未提交事务隔离级别。它只跳过清除锁,不跳过页面、区域和表锁。

桨架强迫使用行锁

TABLOCKX强制使用的专用表级锁,防止其他事务在事务期间使用此表

解锁是被迫使用更新的共享锁而阅读桌

注意:锁定数据库的表之间的差异
复制代码代码如下所示:
SELECT * FROM表(HOLDLOCK)其他事务可以读表,但不能修改和删除

SELECT * FROM表(TABLOCKX)其他事务不能读表,更新和删除