小编mar*_*s-O的帖子

为什么 UPDLOCK 会导致 SELECT 挂起(锁定)?

我在 SQL SERVER 中有一个锁定整个表的选择。

这是设置脚本(确保您没有覆盖任何内容)

USE [master]
GO

IF EXISTS(SELECT 1 FROM sys.databases d WHERE d.name = 'LockingTestDB')
DROP DATABASE LockingTestDB
GO

CREATE DATABASE LockingTestDB
GO

USE [LockingTestDB]
GO
IF EXISTS(SELECT 1 FROM sys.tables t WHERE t.name = 'LockingTestTable')
  DROP TABLE LockingTestTable
GO

CREATE TABLE LockingTestTable (
  Id int IDENTITY(1, 1),
  Name varchar(100),
  PRIMARY KEY CLUSTERED (Id)
)
GO

INSERT INTO LockingTestTable(Name) VALUES ('1')
INSERT INTO LockingTestTable(Name) VALUES ('2')
GO
Run Code Online (Sandbox Code Playgroud)

打开一个新的查询窗口并运行以下事务(其中有一个等待):

USE [LockingTestDB]
GO

BEGIN TRANSACTION
  SELECT * FROM LockingTestTable …
Run Code Online (Sandbox Code Playgroud)

sql-server locking blocking

14
推荐指数
1
解决办法
2万
查看次数

标签 统计

blocking ×1

locking ×1

sql-server ×1