Типы транзакций
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);
Примечание. |
---|
Если запросы были посланы в SQL Server в виде пакета, они все завершатся неуспешно, поскольку анализируются все вместе. Синтаксическая ошибка не даст SQL Server создать план выполнения для пакета. |
Транзакции более высокого уровня, в которых происходит операция, не откатывают и не фиксируют транзакцию.
См. также
Основные понятия
Транзакции (SQL Server Compact)
Управление транзакциями
Транзакции и подключения
Справка и поддержка
Получение помощи (SQL Server Compact 3.5 с пакетом обновления 1)