admin

@@ TRANCOUNT和当前连接

sql

假设我通过SQL Server Management Studio(SSMS)连接到SQL Server
2008,并W1通过单击“新建查询”选项卡打开新窗口,并在W1内编写以下内容:

BEGIN TRANSACTION;

如果我执行该语句5次,然后写(inside W1

SELECT @@TRANCOUNT;

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

SELECT @@TRANCOUNT;

那么返回的值将为0。

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

W1和W2窗口都是在同一连接上打开的,因此变量W1W2@@ TRANCOUNT中的(根据上面的引用)不应该具有相同的值吗?

谢谢


阅读 155

收藏
2021-07-01

共1个答案

admin

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

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

2021-07-01