Подтвердить что ты не робот

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

Как вы устанавливаете autocommit в сеансе SQL Server?

4b9b3361

Ответ 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 после выполнения ваших запросов. В противном случае таблица, которую вы запустили, будет заблокирована для других.

Ответ 4

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