Jak ustawić autocommit w sesji SQL Server?

Jak ustawić autocommit w sesji SQL Server?

Author: hawkeye, 2009-07-07

4 answers

Możesz włączyć autocommit, wyłączając implicit_transactions:

SET IMPLICIT_TRANSACTIONS OFF

Gdy ustawienie jest włączone, powraca do domyślnego trybu transakcji. W trybie implicit transaction każda dokonana zmiana rozpoczyna transakcje, które należy zatwierdzić ręcznie.

Może przykład jest jaśniejszy. Spowoduje to zmianę w bazie danych:

SET IMPLICIT_TRANSACTIONS ON
UPDATE MyTable SET MyField = 1 WHERE MyId = 1
COMMIT TRANSACTION

To nie zapisze zmiany w bazie danych:

SET IMPLICIT_TRANSACTIONS ON
UPDATE MyTable SET MyField = 1 WHERE MyId = 1
ROLLBACK TRANSACTION

Poniższy przykład zaktualizuje wiersz, a następnie zgłosi, że nie ma Transakcji do zatwierdzenia:

SET IMPLICIT_TRANSACTIONS OFF
UPDATE MyTable SET MyField = 1 WHERE MyId = 1
ROLLBACK TRANSACTION

Jak powiedział Mitch Wheat, autocommit jest domyślną wartością dla Sql Server 2000 i nowszych.

 73
Author: Andomar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-07 09:13:52

Chciałem bardziej trwałego i szybszego sposobu. Ponieważ mam tendencję do zapominania, aby dodać dodatkowe linie przed napisaniem moich rzeczywistych zapytań Update / Insert.

Zrobiłem to zaznaczając SET IMPLICIT_TRANSACTIONS pole wyboru z opcji. Aby przejść do opcji Wybierz Narzędzia>Opcje>wykonywanie zapytań>SQL Server>ANSI w Microsoft SQL Server Management Studio.

Upewnij się, że wykonasz commit LUB rollback po zakończeniu wykonywania zapytań. W przeciwnym razie stół, który byś miał Uruchom zapytanie zostanie zablokowane dla innych.

 45
Author: Watt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-28 16:55:37

Autocommit jest domyślnym trybem zarządzania transakcjami SQL Server. (SQL 2000)

Ref: Transakcje Autocommit

 7
Author: Mitch Wheat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-07 03:38:44

W przypadku SQLServer 2005 Express odkryłem, że nawet po wyłączeniu autocommit , wstawiania do tabeli Db były popełniane bez mojego wydania polecenia commit z sesji Studia Zarządzania. Jedyną różnicą było to, że gdy autocommit był wyłączony, mogłem cofnąć wszystkie wstawki; z *autocommit na, nie mogłem.* Właściwie to się myliłem. przy wyłączonym trybie autocommit widzę zmiany tylko w oknie QA (Query Analyzer), z którego wydano polecenia. Jeśli pojawi się nowe okno QA (Query Analyzer), nie widzę zmian wprowadzonych przez pierwsze okno (sesję), tzn. nie są one popełnione! Musiałem wydać wyraźne polecenia commit lub rollback, aby zmiany były widoczne w innych sesjach (QA windows) -- mój błąd! Wszystko działa poprawnie.

 2
Author: Raj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-26 05:19:52