Hi Guys,
I have written quite a big stored procedure which creates a temporary table (multi-session) and updates it. All the statements are encapsulated in a single transaction which is explicitly declared in the code. What happens is that a lock is being put by the server on that table (of type Sch-M) in order thus preventing any type of operations on it (including simple select)
Now, I want to be able read that table from within another transaction. Why is that I cannot use a table hint NOLOCK in the select statement?
Here is some code which reproduces my problem.
Query A:
Query B:Code:SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; BEGIN TRAN TR_DEMO; CREATE TABLE ##TBL1( Oidx int not null primary key identity(1,1), Name nvarchar(30) not null, Type char(1) not null ); INSERT ##TBL1 (Name,Type) VALUES ('Car','M'); WAITFOR DELAY '00:00:10'; INSERT ##TBL1 (Name,Type) VALUES ('Plane','M'); WAITFOR DELAY '00:00:10'; INSERT ##TBL1 (Name,Type) VALUES('Submarine','M'); WAITFOR DELAY '00:00:10'; DELETE FROM ##TBL1; DROP TABLE ##TBL1; COMMIT TRAN TR_DEMO;
Launch query A and then execute query B.Code:SELECT TOP 1 * FROM ##TBL1 (NOLOCK) ORDER BY oidx DESC;
Thanks a lot for your help.


Reply With Quote