我有一個名爲[Test]的表,它具有單列[Id] int。只讀已提交的數據
我打開一個事務,向表中插入一行而不提交它。
begin tran
insert into [Test]([Id]) values(1)
在另一個請求中,我想從表[Test]中選擇數據。 如何才能立即讀取已提交的數據?
Readcommited表提示持有鎖。
select * from test with(readcommitted)
謝謝。
我有一個名爲[Test]的表,它具有單列[Id] int。只讀已提交的數據
我打開一個事務,向表中插入一行而不提交它。
begin tran
insert into [Test]([Id]) values(1)
在另一個請求中,我想從表[Test]中選擇數據。 如何才能立即讀取已提交的數據?
Readcommited表提示持有鎖。
select * from test with(readcommitted)
謝謝。
select * from test with(readpast)
只要具有未提交的數據的事務只有行鎖定,它就會工作。否則,請查看兩個快照隔離備選方案(假設您至少在SQL Server 2005+上)。
我認爲你正在尋找的事務隔離級別設置:http://msdn.microsoft.com/en-us/library/aa259216(SQL.80).aspx
使用隔離級別SERIALIZABLE確保您無法讀取未提交的數據,但同時降低你的服務器的性能。
'READ COMMITTED'將確保它們只能讀取已提交的數據! OP詢問他們如何做到這一點,而不會阻止等待數據提交。 – 2010-09-23 12:34:11