Как говорит @Vijay, вам не нужно создавать здесь второе соединение, поэтому эту проблему легко решить, используя то же соединение.
Для справки, однако, чтобы объяснить, почемувторое соединение блокируется:
Ваше первое соединение работает с уровнем изоляции READ UNCOMMITTED
, что может создавать эксклюзивные блокировки.В какой-то момент между созданием Connection1
и вызовом f2()
вы делаете что-то для создания монопольной блокировки, которая блокирует оператор, выполняемый f2()
, который выполняется с уровнем изоляции по умолчанию READ COMMITTED
.
Если вы хотите увидеть, что происходит с блокировками, откройте два окна SSMS.В первом окне выполните следующие операторы:
set transaction isolation level read uncommitted
go
begin transaction
-- alter some data
delete MyTable
waitfor delay '00:00:15'
rollback transaction
Во втором окне введите sp_lock
, чтобы увидеть блокировки на MyTable
.