Поделиться через


Типы транзакций

Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) поддерживает два типа транзакций: явный режим и режим автоматической фиксации.

Явные транзакции

В явной транзакции явно указываются ее начало и конец. Их можно указать либо с помощью инструкций SQL, либо с помощью функций интерфейсов API базы данных.

Инструкции SQL

Для определения явных транзакций с помощью среды SQL Server Management Studio можно использовать следующие инструкции SQL.

  • BEGIN TRANSACTION
    Отметка точки запуска явной транзакции для подключения.
  • COMMIT TRANSACTION
    Окончание успешно выполненной транзакции, если не было обнаружено ошибок. Все данные, измененные в процессе транзакции, обязательно записываются в базу данных. Ресурсы, удерживаемые транзакцией, освобождаются.
  • ROLLBACK TRANSACTION
    Очистка транзакции, в которой обнаружены ошибки. Все данные, измененные в процессе транзакции, возвращаются в состояние, в котором они находились в начале транзакции. Ресурсы, удерживаемые транзакцией, освобождаются.

ADO.NET и OLE DB

Явные транзакции также можно использовать в среде ADO.NET и OLE DB.

В ADO.NET для запуска явной транзакции следует использовать метод BeginTransaction на объекте SqlCeConnection. Чтобы завершить транзакцию, вызовите методы Commit или Rollback объекта SqlCeTransaction.

Для запуска транзакции в OLE DB вызовите метод ITransactionLocal::StartTransaction. Для завершения транзакции без автоматического начала новой транзакции следует пользоваться либо методом ITransaction::Commit, либо методом ITransaction::Abort, со значением параметра fRetaining, равным FALSE. Следует заметить, что на одном соединении в среде ADO.NET можно создавать несколько транзакций и назначать их разным командам.

Важно!

Когда транзакция фиксируется с помощью API-интерфейса среды ADO.NET, все открытые модули чтения и результирующие наборы этой транзакции должны быть закрыты.

Автоматические транзакции

Автоматический режим является стандартным режимом SQL Server Compact 3.5 управления транзакциями. По завершении исполнения каждая инструкция SQL фиксируется либо откатывается. Подключение к SQL Server Compact 3.5 выполняется в автоматическом режиме каждый раз, когда этот стандартный режим не переписывается явными транзакциями. Режим автоматической фиксации транзакций используется по умолчанию в ADO.NET и OLE DB.

Подключение к SQL Server Compact 3.5 выполняется в автоматическом режиме, пока инструкция BEGIN TRANSACTION не запустит явную транзакцию. При фиксации либо откате явной транзакции SQL Server Compact 3.5 возвращается в автоматический режим.

Компиляция и ошибки времени выполнения

В отличие от SQL Server, SQL Server Compact 3.5 не обрабатывает инструкции целыми пакетами. SQL Server Compact 3.5 обрабатывает инструкции по одной и исполняет каждую отдельно. Если одна инструкция возвращает ошибку, это не влияет на прочие инструкции в том же пакете. Например, если среда SQL Server Management Studio используется для выполнения следующего набора запросов в SQL Server Compact 3.5, первые два запроса окажутся правильными, а третий выполнить не удастся из-за ошибки синтаксиса.

CREATE TABLE TestData (col int);

INSERT INTO TestData VALUES (1);

INSERTT INTO TestData VALUES (1);

ms172353.note(ru-ru,SQL.100).gifПримечание.
Если запросы были посланы в SQL Server в виде пакета, они все завершатся неуспешно, поскольку анализируются все вместе. Синтаксическая ошибка не даст SQL Server создать план выполнения для пакета.

Транзакции более высокого уровня, в которых происходит операция, не откатывают и не фиксируют транзакцию.

См. также

Основные понятия

Транзакции (SQL Server Compact)
Управление транзакциями
Транзакции и подключения

Справка и поддержка

Получение помощи (SQL Server Compact 3.5 с пакетом обновления 1)