Shakh
User
 Fresh Boarder
| Posts: 8 |   | Karma: 0 |
|
"Недопустимое состояние транзакции" при xdRollback
|
|
Posted: 2008/04/11 10:06 |
|
|
|
|
MS SQL, Access AnyDAC.v2.0.1.285
Вызов AdConnection.Close вызывает исключение "Недопустимое состояние транзакции" при con.TxOptions.StopAction := xdRollback;
Установил вторую версию - заметил, что теперь при завершении приложения открытая транзакции фиксируется - мне необходим был вариант, работавший в версии, стоявшей у меня до этого - когда она откатывалась. В History ничего про это изменение не нашёл. Установил con.TxOptions.StopAction := xdRollback; При закрытии соединения получил "Недопустимое состояние транзакции" (и на MS SQL и на Access).
Вот пример, который воспроизводит
procedure TForm1.Button1Click(Sender: TObject);
var
q: TADQuery;
con: TADConnection;
begin
con := TADConnection.Create( nil );
con.TxOptions.StopAction := xdRollback;
con.Params.Text :=
'DriverID=MSSQL'#13#10 +
'ODBCDriver=SQL SERVER'#13#10 +
'Server=.\SQLEXPRESS'#13#10 +
'Database=Locat'#13#10 +
'User_Name=sa'#13#10 +
'Password=*';
con.Open;
q := TADQuery.Create( nil );
q.Connection := con;
q.SQL.Text := 'SELECT * FROM TS856S3PNTSA41C7S1D7LTB1P18';
q.Open;
q.Free;
con.Close; // raises "Invalid transaction state"
con.Free;
end;
|
Вызов запроса (любого) необходим для воспроизведения - без него закрывается без ошибок.
con.TxOptions.StopAction := xdRollback; это то что мне требовалось сделать, чтобы получить требуемое поведение?
|
|