@@ TRANCOUNT和当前连接

时间:2010-05-05 19:12:14

标签: sql sql-server tsql sql-server-2008

假设我通过SQL Server Management Studio(SSMS)连接到SQL Server 2008并通过单击New Query选项卡打开新窗口W1并在W1中写下以下内容:

BEGIN TRANSACTION;

如果我执行此语句5次,然后写(在W1内)

SELECT @@TRANCOUNT;

,然后返回的值将是5.但是如果我打开另一个窗口W2(在同一个SSMS实例内,因此在同一个连接上)并在W2中写入

SELECT @@TRANCOUNT; 

然后返回的值将为0.

  

@@ TRANCOUNT变量返回当前连接的活动事务数。

W1和W2窗口都是在同一个连接上打开的,所以W1W2变量@@ TRANCOUNT不应该(根据上面的引用)保持相同的值?

感谢名单

1 个答案:

答案 0 :(得分:5)

SSMS中的每个查询窗口都是单独的连接,在单独的spid上运行。查询窗口选项卡中括号中的数字是当前窗口的连接编号。

打开几个窗口,如果你愿意,打开每个窗口中的事务,你应该能够看到每个窗口都显示在对sp_who2的调用结果中。使用窗口选项卡中的spid编号,您将能够找到该proc结果中的每一行。您还可以在每个查询窗口底部的状态栏中以及每个打开的查询窗口的属性窗口中找到有关连接的详细信息。