Как вы устанавливаете autocommit в сеансе SQL Server?
Как установить аутокоммит в сеансе SQL Server?
Ответ 1
Вы можете включить автоматическую активацию, установив impicit_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
Как и Mitch Wheat, autocommit является стандартным для Sql Server 2000 и выше.
Ответ 2
Мне нужен был более постоянный и быстрый способ. Потому что я, как правило, забываю добавить дополнительные строки перед написанием моих фактических запросов на обновление/вставку.
Я сделал это, установив флажок SET IMPLICIT_TRANSACTIONS в Options. Чтобы перейти к параметрам "Выбрать" "Инструменты" > "Параметры" > "Выполнение запросов" > "SQL Server" > "ANSI" в вашей Microsoft SQL Server Management Studio.
Просто выполняйте commit
или rollback
после выполнения ваших запросов. В противном случае таблица, которую вы запустили, будет заблокирована для других.
Ответ 3
Autocommit - это режим управления транзакциями по умолчанию SQL Server. (SQL 2000 и далее)
Ссылка: Автообязательные транзакции
Ответ 4
С SQLServer 2005 Express я обнаружил, что даже при отключении autocommit вставки в таблицу Db были зафиксированы без моего фактического выдачи команды фиксации из сеанса Management Studio. Единственная разница заключалась в том, что когда autocommit был выключен, я мог откатить все вставки; с * autocommit на, я не мог. * На самом деле я ошибся. С отключенным режимом autocommit я вижу изменения только в окне QA (Query Analyzer), из которого были выведены команды. Если я вытащил новое окно QA (Query Analyzer), я не вижу изменений, сделанных в первом окне (сеансе), т.е. Они НЕ совершены! Мне пришлось выдавать явные команды фиксации или отката, чтобы изменения отображались на других сеансах (окна QA) - мой плохой! Все работает правильно.