Как установить автокоммит в сеансе SQL Server?

Как установить автокоммит в сеансе SQL Server?

4 ответов


вы можете включить автокоммит, установив implicit_transactions OFF:

SET IMPLICIT_TRANSACTIONS OFF

когда параметр включен, он возвращается в режим неявной транзакции. В неявном режиме транзакции каждое внесенное изменение запускает транзакции, которые необходимо зафиксировать вручную.

возможно, пример более ясен. Это напишет изменение в базу данных:

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

это не будет записывать изменения в базу данных:

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

следующий пример обновите строку, а затем пожалуйтесь, что нет транзакции для фиксации:

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

как сказал Митч Уит, autocommit по умолчанию для Sql Server 2000 и выше.


Я хотел более постоянный и быстрый способ. Потому что я, как правило, забываю добавлять дополнительные строки перед написанием моих фактических запросов обновления/вставки.

Я сделал это путем проверки УСТАНОВИТЬ IMPLICIT_TRANSACTIONS флажок из вариантов. Для перехода к параметрам выберите Инструменты>Параметры>выполнение запросов>SQL Server>ANSI в среде Microsoft SQL Server Management Studio.

просто убедитесь, что для выполнения commit или rollback после завершения выполнения запросов. В противном случае таблица, которую вы бы запустили, будет заблокирована для других.


Autocommit-это режим управления транзакциями SQL Server по умолчанию. (SQL 2000 и далее)

Ref:Транзакции С Автоматической Фиксацией


с SQLServer 2005 Express я обнаружил, что даже с автоматическое отключение, вставки в таблицу БД были зафиксированы без моей фактической команды фиксации из сеанса Management Studio. Разница была только в том, когда autocommit был выключен, я мог откатить все вставки; с *автофиксации на, Я не мог.* на самом деле, я был неправ. при выключенном режиме автокоммита я вижу изменения только в QA (Query Analyzer) окно, из которого были выданы команды. Если я открыл новое окно QA (Query Analyzer), я не вижу изменений, внесенных первым окном (сеансом), т. е. они не зафиксированы! Мне пришлось выпустить явные команды фиксации или отката, чтобы сделать изменения видимыми для других сеансов(QA windows) -- мой плохой! Все работает правильно.