SQL Server TABLOCKX не блокирует таблицу - PullRequest
1 голос
/ 08 марта 2019

У меня есть большая таблица с миллионами записей, и я пытаюсь использовать TABLOCKX, я должен обновить некоторые данные исключительно.

Я проверяю эту транзакцию

BEGIN TRANSACTION

SELECT * 
FROM [MyDatabase].[dbo].[MyTable] WITH (TABLOCKX) 
WHERE 0 = 1

WAITFOR DELAY '00:30'

ROLLBACK TRANSACTION

Если я попытаюсь выбрать данные таким образом

SELECT *  
FROM [MyDatabase].[dbo].[MyTable]

В таблице нет БЛОКИРОВКИ, я могу ПРОЧИТАТЬ данные.

Но я обнаружил, что, если я попытаюсь выбрать из таблицы другим способом, замок работает,

SELECT *  
FROM [MyDatabase].[dbo].[MyTable] WITH (TABLOCKX)

Почему? Я попытался создать еще один табличный тест с записью 3 o 4, и блокировка работает без "WITH (TABLOCKX)".

...