设置交易隔离级别和突出显示语句

时间:2016-06-17 13:20:13

标签: sql-server

我在一个窗口中编写多个SELECT语句,通常会根据需要突出显示并运行它们。

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

SELECT * FROM Table1

SELECT * FROM Table2

SELECT * FROM Table3

这是我的窗口可能是什么样子的示例,现在从这里我将突出显示SELECT * FROM Table2并运行它。

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;是否仍然适用,即使它没有用声明突出显示?

如果它仍然适用, 是如何做到的?

2 个答案:

答案 0 :(得分:1)

忽略了为什么你不应该使用READ UNCOMMITTED ...

的常见问题

设置TRANSACTION ISOLATION LEVEL适用于连接级别,直到断开连接或设置其他级别为止。

来自BOL

  

设置TRANSACTION ISOLATION LEVEL(Transact-SQL)   控制由SQL Server连接发出的Transact-SQL语句的锁定和行版本控制行为。

因此,在SSMS查询窗口中运行一次将适用于您在该连接(窗口)内发送到服务器的所有批处理查询。

或者,您可以在语句中添加WITH (NOLOCK)以应用于单个语句,例如

SELECT * FROM Table1;
SELECT * FROM Table2 WITH (NOLOCK);
SELECT * FROM Table3;

答案 1 :(得分:1)

不,如果您没有执行它,它将不适用于您的连接。正如Chris在上一个答案中提到的,一旦在连接中执行它(SSMS中的查询窗口),就会使用此事务隔离级别执行此连接中的所有后续查询。

如果您有疑问,可以立即检查用于连接的事务隔离级别:

DBCC USEROPTIONS