2010-11-25 2 views
2

Я выполнил следующий запрос в студии SQL Server 2005, и я не совершил транзакцию.Получение необработанных данных в транзакции в SQL Server 2005

begin transaction tran1 
insert into errorlog (errorlogid,OCCURREDTIME,MESSAGE) values (10002,0,''); 

(данные не фиксированные). Одновременно в другом окне запроса, я выполнив следующий запрос,

select * from errorlog; 

Но он ждет, когда tran1 сделки до конца (из-за блокировки).

Таким образом, я выполнил запрос с опцией NOLOCK (из другого окна запроса)

select * from errorlog with (NOLOCK); 

Но, я получаю строка вставляется и не совершила по tran1. Пожалуйста, помогите мне получить строки, которые не вставляются активными транзакциями в выбранном запросе.

Благодаря & С уважением,

Padmakumar

ответ

1
select * from errorlog with (READPAST); 

От "Table Hints" in MSDN

READPAST

Указывает, что компонент Database Engine не читает строки, заблокированные другими транзакциями.

То есть, он пропускает замки (например, проводятся сделками), но в противном случае считывает зафиксированные данные только

+0

возможно выдать запрос на выборку с READPAST и без какого-либо общего locks.I думает, READPAST также вопросы, разделяемую блокировку при выполнении запроса. – padmakumar 2010-11-25 07:44:49

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