IBM DB2 для SQL Server - PullRequest
       14

IBM DB2 для SQL Server

0 голосов
/ 03 октября 2018

Я мигрирую с IBM DB2 на SQL Server, и у меня возник вопрос относительно преобразования.Что эквивалентно SQL Server:

SELECT * 
FROM MyTable with RS USE AND KEEP EXCLUSIVE LOCKS

1 Ответ

0 голосов
/ 03 октября 2018

Очевидно, что RS означает

Стабильность чтения (RS) Уровень изоляции стабильности чтения блокирует только те строки, которые приложение извлекает в течение единицы работы.RS гарантирует, что любая подходящая строка, прочитанная во время UOW, не может быть изменена другими процессами приложения, пока не завершится UOW, и что любая строка, измененная другим процессом приложения, не может быть прочитана, пока изменение не будет зафиксировано этим процессом.В RS доступ к незафиксированным данным и неповторяемым чтениям невозможен.Однако возможны фантомные чтения.

Уровни изоляции DB2

Так что это похоже на READ COMMITTED в SQL Server.Это отличается от SERIALIZABLE или HOLDLOCK, которые выдают блокировки диапазона для строк, которые фактически не присутствуют, предотвращая вставки другими сеансами строк, совпадающие с предикатами запроса SELECT.

And " USE AND KEEP EXCLUSIVE LOCKS"принудительное чтение с использованием X-блокировок.

Таким образом, эквивалент в SQL Server будет

select * from MyTable with (xlock)

, который потребуется в транзакции, так как X-блокировки всегда удерживаются до концасделки.

...