В SQL Server, как я знаю, какой режим транзакции я в настоящее время использую?

В SQL Server, как я знаю, какой режим транзакции я в настоящее время использую? Такой как автоматическая фиксация, явная, или неявная. И как я могу изменить один режим на другое использование tsql? Большое спасибо.

10
задан Just a learner 27 May 2010 в 06:42
поделиться

3 ответа

IF @@TRANCOUNT = 0 PRINT 'No current transaction, autocommit mode (default)'
ELSE IF @@OPTIONS & 2 = 0 PRINT 'Implicit transactions is off, explicit transaction is currently running'
ELSE PRINT 'Implicit transactions is on, implicit or explicit transaction is currently running'

Я не думаю, что есть способ определить, была ли текущая транзакция запущена явно или неявно. Таким образом, этот код просто пытается угадать: если IMPLICIT_TRANSACTIONS выключено, предполагается, что транзакция запущена явно.

Ссылки MSDN:

9
ответ дан 3 December 2019 в 20:03
поделиться
select @@OPTIONS & 2

если это возвращает 2, вы находитесь в режиме неявной транзакции. Если возвращается 0, вы находитесь в режиме автокоммита.

BOL для @@OPTIONS

BOL для каждой опции

Чтобы переключить режим, в котором вы находитесь, вы должны использовать

set implicit_transactions on

или

set implicit_transactions off
5
ответ дан 3 December 2019 в 20:03
поделиться

Небольшое изменение ранее опубликованного сценария - соединение находится в режиме автоматической фиксации, если нет активной транзакции И неявные транзакции отключены:

IF @@TRANCOUNT = 0 AND (@@OPTIONS & 2 = 0)
  PRINT 'No current transaction, autocommit mode (default)'
ELSE IF @@TRANCOUNT = 0 AND (@@OPTIONS & 2 = 2)
  PRINT 'Implicit transactions is on, no transaction started yet'
ELSE IF @@OPTIONS & 2 = 0 
  PRINT 'Implicit transactions is off, explicit transaction is currently running'
ELSE 
  PRINT 'Implicit transactions is on, implicit or explicit transaction is currently running' + CAST(@@OPTIONS & 2 AS VARCHAR(5))
5
ответ дан 3 December 2019 в 20:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: