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'
Eu não acho que haja uma maneira de determinar se a transação atual foi iniciada explicitamente ou implicitamente. Portanto, este código apenas tenta adivinhar:se IMPLICIT_TRANSACTIONS estiver OFF, a transação é considerada iniciada explicitamente.
Referências MSDN: