In SQL Server, come faccio a sapere quale modalità di transazione sto utilizzando attualmente? Come ad esempio autocommit, esplicito o implicito. E come posso cambiare una modalità con un'altra usando tsql? Grazie mille.In SQL Server, come faccio a sapere quale modalità di transazione sto utilizzando attualmente?
risposta
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'
non lo faccio penso che ci sia un modo per determinare se la transazione corrente è stata avviata in modo esplicito o implicito. Quindi, questo codice prova solo a indovinare: se IMPLICIT_TRANSACTIONS è OFF, si presume che la transazione venga avviata esplicitamente.
MSDN riferimenti:
select @@OPTIONS & 2
se restituisce 2, si è in modalità di transazione implicita. Se restituisce 0, sei in autocommit.
Per cambiare la modalità ci si trovi, devi usare
set implicit_transactions on
o
set implicit_transactions off
Dovrebbe essere implicit_transactions. –
@daniel_aren - true, ora cambiato. Non so perché non è stato avvistato prima. –
L'accensione/spegnimento avviene al livello del server o alla sessione attiva in cui si sta verificando la transazione? – SQLnbe
leggera modifica al copione precedentemente pubblicato - connessione è in modalità autocommit se non c'è alcuna transazione attiva e transazioni implicite sono spenti :
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))
- 1. Come faccio a sapere quale versione di OpenGL sto usando?
- 2. SQL Server Profiler: come faccio a sapere quale database è connesso?
- 3. Come posso sapere quale versione di Cassandra sto utilizzando?
- 4. In Django, come faccio a sapere l'utente attualmente loggato?
- 5. Come faccio a uscire _ in SQL Server?
- 6. Come sapere quale shell Unix sto usando?
- 7. Come faccio a sapere quale nodo è focalizzato in JavaFX?
- 8. Come faccio a sapere quale versione di servlet-api.jar ho?
- 9. Come faccio a sapere quale porta seriale usare su Linux?
- 10. Come faccio a sapere quale font sta usando Chrome?
- 11. Come faccio a sapere quale gemma ha una dipendenza specifica?
- 12. UITableView, come faccio a sapere quale sezione durante cellForRowAtIndexPath?
- 13. Come faccio a sapere quale file settings.xml sta usando maven
- 14. Come sapere quale servlet e versione JSP sto usando?
- 15. Come sapere chi è connesso a SQL Server
- 16. Transazione server Sql Timeout impegno
- 17. Query attualmente in esecuzione in SQL Server
- 18. Come faccio a sapere se il mio server ha NUMA?
- 19. Come faccio a sapere a livello di codice quando sto per superare la dimensione dell'heap javascript?
- 20. Come faccio a sapere di quale scheda sto facendo clic con il pulsante destro su winforms tabcontrol?
- 21. Come posso scoprire quale versione di reportlab sto utilizzando?
- 22. Connessione a SQL Server tramite PDO utilizzando SQL Server Driver
- 23. Come connettersi a SQL Server utilizzando LINQ to SQL?
- 24. Come faccio a sapere su quale nodo è in esecuzione un processo di erlang?
- 25. Come faccio a sapere quale tipo di valore si trova in una variabile Perl?
- 26. MapReduce utilizzando SQL Server come origine dati
- 27. Come posso passare dalla modalità Windows di SQL Server alla modalità mista (SQL Server 2008)?
- 28. Come faccio a sapere dove vivono gli script di accesso?
- 29. In quale Paese è attualmente l'utente?
- 30. Transazione Multiple Invoke-SqlCmd e Sql Server
Penso che il messaggio" Nessuna transazione corrente, modalità di autocommit (default) "sia un po 'fuorviante dal momento che autocommit non è completamente sicuro a questo punto, la connessione potrebbe essere impostata per le transazioni implicite ma poiché nessuna istruzione era rilasciato ancora, nessuna transazione è stata avviata. – MaxiWheat