Ответ 1
да подсказка таблицы отменяет настройку уровня изоляции, поэтому вы все равно будете получать грязные сообщения
легко проверить
сначала запустите этот
create table bla(id int)
insert bla values(1)
begin tran
select * from bla with (updlock, holdlock)
убедитесь, что не совершили переход! откройте другое окно и запустите это
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
select * from bla -- with (nolock)
вы ничего не получите.
откройте другое окно и запустите это сейчас
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
select * from bla with (nolock)
как вы можете видеть, вы вернете строку
BTW, READ COMMITTED - это уровень изоляции по умолчанию, нет необходимости устанавливать его
Взгляните на Изоляция моментальных снимков, которая не даст вам грязных данных, но не заблокирует