@@ TRANCOUNT и текущее соединение - PullRequest
2 голосов
/ 05 мая 2010

Предположим, я подключаюсь к SQL Server 2008 через SQL Server Management Studio (SSMS) и открываю новое окно W1, нажимая на вкладку Новый запрос, и пишу следующее в W1:

BEGIN TRANSACTION;

Если я выполню это утверждение 5 раз, а затем напишу (внутри W1)

SELECT @@TRANCOUNT;

, тогда возвращаемое значение будет 5. Но если я открою другое окно W2 (внутри того же экземпляра SSMS и, следовательно, на том же соединении) и напишу внутри W2

SELECT @@TRANCOUNT; 

тогда возвращаемое значение будет равно 0.

@@ TRANCOUNT переменная возвращает количество активных транзакций для текущего соединения.

Оба окна W1 и W2 были открыты для одного и того же соединения, поэтому не должны (согласно приведенной выше цитате) в переменных W1 и W2 @@ TRANCOUNT содержать одно и то же значение?

* 1023 спасибо *

1 Ответ

5 голосов
/ 05 мая 2010

Каждое окно запроса в SSMS является отдельным соединением, запущенным на отдельном spid. Число в скобках на вкладке окна запроса - это номер вашего соединения для текущего окна.

С двумя открытыми окнами и открытыми транзакциями в каждом, если хотите, вы сможете увидеть, как каждое из них отображается в результатах вызова sp_who2. Используя номер паука на вкладке окна, вы сможете найти каждую строку в результатах этого процесса. Вы также можете найти подробную информацию о вашем соединении в строке состояния внизу каждого окна запроса, а также в окне свойств для каждого открытого окна запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...