Поддержка автоматических транзакций
Автоматический старт и подтверждение транзакций
Основное кардинальное изменение связано с реализацией поддержки автоподтверждения операций. Поскольку этот режим не является оптимальным при работе с SQL сервером, по умолчанию он выключен. Для работы в режиме автоподтверждения можно указать в строке подключения «auto_commit=true» или после подключения установить свойство сессии «Session AutoCommit» равным true. Для выключения этого режима можно явно запустить транзакцию через методы сессии (или через ADODB.Connection.BeginTrans) или выполнив запрос «SET TRANSACTION». С помощью последнего можно запустить транзакцию со специфическими параметрами, которые пока нельзя указывать через провайдер.
Провайдер самостоятельно определяет запросы с запуском/подтверждением/откатом транзакции и применяет их к сессии.
Автоматические транзакции являются персональными. То есть при открытии в режиме автоподтверждения нескольких результирующих множеств, с каждым из них будет связана своя собственная транзакция. После закрытия множества будет выполнен commit. Остальные типы запросов (исключая команды управления транзакцией) будут автоматически завершаться вызовом commit для их локальной транзакции. Принятая схема изолирует открытые запросы от команд модификации данных и исключает необходимость переоткрытия (или докачки) результирующих множеств, как это принято в BDE.
Уровень изоляции автоматических транзакций можно
указать в строке подключения параметр
«auto_commit_level» или после подключения через
параметр сессии «Autocommit Isolation Levels«.
Значения этих параметров одни и те же:
0x1000 | Read Commited (Cursor Stability) |
0x10000 [default] | Repeatable Read (Snapshot, Concurrency) |
0x100000 | Serializable (Isolated, Consistency) |
Изменение названия провайдера
Для избежания конфликтов имен провайдер изменил регистрационное название с «IBProvider» на «LCPI.IBProvider». Поэтому после проведения регистрации обновленной DLL для создания провайдера нужно указывать его новое имя.
Название DLL не изменилось и остается прежним — «_IBProvider.dll».