Мы находимся в процессе миграции унаследованного приложения VB6 с бэкэнда Sybase на SQL Server 2008 R2. Большинство приложений делают переход хорошо, но у меня есть одно приложение, которое использует строгий контроль транзакций из кода с использованием именованных транзакций. На основании тщательного тестирования выясняется, что клиент или сервер вообще не поддерживают команды «begin», «commit» и «rollback».
Выполнение такой команды:
conSQL.Execute "begin tran CaptureSch" ', , adExecuteNoRecords
и последующий за ним @@ trancount всегда дает 0. Кроме того, любая попытка совершить транзакцию позже в коде приводит к ошибке 3902.
Используя эту команду:
conSQL.BeginTrans
, по-видимому, приводит к некоторому изменению поведения, однако @@ trancount по-прежнему равен нулю, и этот метод не будет поддерживать вложенные транзакции, чего требует код.
Я пытался изменить неявные режимы транзакций, различные параметры строки подключения и многое другое, но безрезультатно. Кто-нибудь есть какие-либо предложения о том, как заставить этот тип функциональности работать? Примеры этого типа функциональности, которые я нахожу в Интернете, показывают, что вложенные именованные транзакции поддерживаются, если они явно выполняются в коде.
Спасибо за помощь.