Как вы устанавливаете автоматическую фиксацию в сеансе SQL Server?

StackOverflow https://stackoverflow.com/questions/1090240

  •  11-09-2019
  •  | 
  •  

Вопрос

Как вы устанавливаете автоматическую фиксацию в сеансе SQL Server?

Это было полезно?

Решение

Вы можете включить автоматическую фиксацию, отключив implicit_transactions:

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

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

Другие советы

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

Я сделал это, проверив УСТАНОВИТЕ ИМПЛИЦИТНЫЕ_ТРАНЗАКЦИИ установите флажок в разделе Параметры.Чтобы перейти к параметрам, выберите Инструменты> Параметры> Выполнение запроса>SQL Server> ANSI в вашей Microsoft SQL Server Management Studio.

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

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

Ссылка: Автоматическая фиксация Транзакций

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top