Как вы знаете, вы можете просматривать непринятые данные в текущем сеансе следующим образом:
CREATE TABLE TestTable
(
ID int not null
);
INSERT INTO TestTable(ID) values(1);
INSERT INTO TestTable(ID) values(2);
INSERT INTO TestTable(ID) values(3);
SELECT * FROM TestTable;
BEGIN TRANSACTION
INSERT INTO TestTable(ID) values(4);
INSERT INTO TestTable(ID) values(5);
--Although the transaction has not commited you can still see the records inserted from within the current sessions scope.
SELECT * FROM TestTable;
COMMIT TRANSACTION
DROP TABLE TestTable;
Теперь предположим, что вам нужно открыть другое соединение, чтобы вы могли видеть эти незафиксированные данные. Вы можете сделать это на уровне запроса, используя подсказку запроса NOLOCK . Например:
SELECT * FROM TestTable WITH(NOLOCK)