0

Установленный тупик, когда мне нужно запросить два разных отчета о продажах в одной таблице.sql report 3.0 deadlock

запрос на обоих отчета

select * from tableA 
inner join tableB on ... 
inner join tableC on ... 

Мое решение как для отчета о продажах

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
select * from tableA 
inner join tableB on ... 
inner join tableC on ... 
SET TRANSACTION ISOLATION LEVEL READ COMMITTED 

это правильное решение ?.

Я думаю, что отчеты о продажах не будет точно, как будет загрязнен прочитать

ответ

0

Обычно вы не получите тупиковую ситуацию только с помощью двух SELECTS на одних и тех же таблицах. У вас есть какие-то процессы, связанные с ним? Это весь код отчета? Используете ли вы производственную таблицу или копируете ее для отчета? Все это может считаться.

Я предлагаю вам запустить SQL Profiler (Server Side Trace) для запуска трассировки и проверки результата. Обычно вы должны найти график взаимоблокировки, что означает, что вы можете точно определить, какой запрос запускается до и противоречить другому запросу.

В качестве обходного пути для этого вы можете использовать свое решение, но так же, как обходной путь. У вас может быть высокая неточность.

Смежные вопросы