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


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

Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) поддерживает два типа транзакций: явную и автоматическую.

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

В явной транзакции явно указываются ее начало и конец. Их можно указать либо с помощью инструкций 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 Edition управления транзакциями. По завершении исполнения каждая инструкция SQL фиксируется либо откатывается. Подключение к SQL Server Compact Edition выполняется в автоматическом режиме каждый раз, когда этот стандартный режим не переписывается явными транзакциями. Кроме того, автоматический режим является стандартным режимом для ADO .NET и OLE DB.

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

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

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

CREATE TABLE TestData (col int);

INSERT INTO TestData VALUES (1);

INSERTT INTO TestData VALUES (1);

Примечание.
Если эти запросы отправлены как единый пакет в SQL Server, все запросы выполнить не удастся, поскольку они будут разобраны вместе. Ошибка синтаксиса приведет к неспособности SQL Server создать план выполнения для всего пакета.

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

См. также

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

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

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

Получение помощи по SQL Server Compact Edition