Jak ustawić autocommit w sesji SQL Server?
Jak ustawić autocommit w sesji SQL Server?
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.
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.
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)
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.
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