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


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

4 58

4 ответа:

вы можете включить автоматической фиксации, установив параметры 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

как сказал Митч Уит, 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, что я нашел, что даже с autocommit off, вставки в таблицу БД были зафиксированы без моего фактического выпуска команды фиксации из сеанса Management Studio. Разница была только в том, когда autocommit был выключен, я мог откатить все вставки; с *autocommit on, Я не мог.* на самом деле, я был неправ. при выключенном режиме автоматической фиксации я вижу изменения только в QA (анализатор запросов) окно, из которого были выданы команды. Если я открыл новое окно QA (Query Analyzer), я не вижу изменений, внесенных первым окном (сеансом), т. е. они не зафиксированы! Мне пришлось выдать явные команды фиксации или отката, чтобы сделать изменения видимыми для других сеансов (QA windows) -- мой плохой! Все работает правильно.