只读提交的数据

时间:2010-09-23 11:47:41

标签: sql sql-server tsql

我有一个名为[Test]的表,它有一列[Id] int。

我打开一个事务,在表中插入一行而不提交它。

begin tran
insert into [Test]([Id]) values(1)

在另一个请求中,我想从表[Test]中选择数据。 如何立即只读取已提交的数据?

Readcommited表提示持有一个锁。

select * from test with(readcommitted) 

谢谢。

2 个答案:

答案 0 :(得分:3)

select * from test with(readpast) 

只要具有未提交数据的事务只有行锁,它就会工作。否则,请查看两个快照隔离备选方案(假设您至少使用SQL Server 2005 +)。

答案 1 :(得分:1)

我认为您正在寻找事务隔离级别设置:http://msdn.microsoft.com/en-us/library/aa259216(SQL.80).aspx

使用隔离级别SERIALIZABLE可确保您无法读取未提交的数据,但同时会降低服务器性能。