Требует ли «Установить уровень транзакции» начало транзакции? - PullRequest
3 голосов
/ 10 декабря 2010

В MS SQL Server, если я использую «УРОВЕНЬ ИЗОЛЯЦИИ УСТАНОВКИ» в хранимой процедуре, нужно ли заключать операторы выбора в блок BEGIN / END TRANSACTION?Будет ли следующая работа работать как положено?

CREATE PROCEDURE my_sproc AS
BEGIN

    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

    SELECT * FROM MyTable

END

Ответы [ 2 ]

3 голосов
/ 10 декабря 2010

Настройка TRANSACTION ISOLATION LEVEL является настройкой уровня соединения.Нет необходимости заключать его в транзакцию.

При этом, вы понимаете, что из этого параметра у вас будут грязные чтения и тому подобное?

Вы можете выполнить то же самое с помощью запроса-запрос с использованием подсказок блокировки, таких как:

SELECT * FROM MyTable WITH (NOLOCK)

1 голос
/ 10 декабря 2010

УСТАНОВИТЬ УРОВЕНЬ ИЗОЛЯЦИИ СДЕЛКИ отличается от BEGIN / COMMIT / ROLLBACK

  • Первое изменение параметров изоляции и параллелизма
  • Второе определяет атомарную «единицу работы»

Нет прямой связи или взаимодействия: разные понятия

...