Sql server 2012 如果一个tablock被SQL Server中已经存在的表上的其他查询应用,我们可以插入到表中吗?

Sql server 2012 如果一个tablock被SQL Server中已经存在的表上的其他查询应用,我们可以插入到表中吗?,sql-server-2012,Sql Server 2012,我正试图使用insert-into…select语句(使用TABLOCK)在表中插入一些记录。但我不能这样做 问题是,其他一些查询已经在表上应用了TABLOCK。这是原因吗 当我尝试在没有tablock的情况下插入时,它正在被插入 Truncate和Drop语句也不起作用 使用(TABLOCK)更改SQL Server锁定的行为-它不只是锁定受影响的行,而是锁定整个表 因此,如果您有一个INSERT操作,它将放置一个独占的表范围的锁-在持有锁的第一个事务完成之前,其他操作现在不能以任何方式访问该

我正试图使用
insert-into…select
语句(使用
TABLOCK
)在表中插入一些记录。但我不能这样做

问题是,其他一些查询已经在表上应用了
TABLOCK
。这是原因吗

当我尝试在没有tablock的情况下插入时,它正在被插入

Truncate和Drop语句也不起作用

使用(TABLOCK)
更改SQL Server锁定的行为-它不只是锁定受影响的行,而是锁定整个表

因此,如果您有一个
INSERT
操作,它将放置一个独占的表范围的锁-在持有锁的第一个事务完成之前,其他操作现在不能以任何方式访问该表

如果没有
(TABLOCK)
提示,SQL Server仅对插入的行放置排他锁-任何其他行仍然可以访问(甚至可以更新或删除)

WITH(TABLOCK)
是一把又大又重的大锤-小心使用