Как вы устанавливаете автоматическую фиксацию в сеансе SQL Server?
-
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), я не вижу изменений, внесенных первым окном (сеансом), т.е.они НЕ совершены!Мне пришлось выдавать явные команды фиксации или отката, чтобы сделать изменения видимыми для других сеансов (окна контроля качества) -- моя вина!Все работает правильно.