@@ TRANCOUNT和当前连接

Asp*_*Net 2 sql t-sql sql-server sql-server-2008

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

BEGIN TRANSACTION;
Run Code Online (Sandbox Code Playgroud)

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

SELECT @@TRANCOUNT;
Run Code Online (Sandbox Code Playgroud)

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

SELECT @@TRANCOUNT; 
Run Code Online (Sandbox Code Playgroud)

然后返回的值将为0.

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

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

感谢名单

Sco*_*vey 5

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

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