调用MS SQL SERVER 2008 R2时在delphi中使用事务时出现问题?
我需要从Delphi调用一些存储过程,因为它们是相关的,所以我必须使用事务。调用MS SQL SERVER 2008 R2时在delphi中使用事务时出现问题?,delphi,transactions,delphi-2010,ado,sql-server-2008-r2,Delphi,Transactions,Delphi 2010,Ado,Sql Server 2008 R2,我需要从Delphi调用一些存储过程,因为它们是相关的,所以我必须使用事务。 但调用时,它总是返回一个错误: '事务不能有多个具有此游标类型的记录集。更改游标类型、提交事务或关闭其中一个记录集。' 此错误仅在MS SQL SERVER 2008中出现,当我使用MS Access时,它工作正常。 有什么问题吗 提前谢谢 更新: procedure TForm1.Button2Click(Sender: TObject); begin if not DM.ADOConnection.
但调用时,它总是返回一个错误: '事务不能有多个具有此游标类型的记录集。更改游标类型、提交事务或关闭其中一个记录集。' 此错误仅在MS SQL SERVER 2008中出现,当我使用MS Access时,它工作正常。
有什么问题吗 提前谢谢 更新:
procedure TForm1.Button2Click(Sender: TObject);
begin
if not DM.ADOConnection.InTransaction then
dm.ADOConnection.BeginTrans;
ADOQuery.LockType := ltBatchOptimistic;
ADOQuery.CursorType := ctUnspecified;
Try
with ADOQuery do
begin
Close;
SQL.Clear;
SQL.Text := 'INSERT INTO [UserAction] (UAct_Frm_ID,UAct_Type,UAct_Description'
+',UAct_Date,UAct_Time,UAct_Usr_ID)'
+'VALUES(:UAct_Frm_ID'
+',:UAct_Type,:UAct_Description,:UAct_Date,:UAct_Time'
+',:UAct_Usr_ID)';
Parameters.ParamByName('UAct_Frm_ID').Value := 1;
Parameters.ParamByName('UAct_Type').Value := 1;
Parameters.ParamByName('UAct_Description').Value := 'test by Q1';
Parameters.ParamByName('UAct_Date').Value := completdate(datenow);
Parameters.ParamByName('UAct_Time').Value := TimeToStr(Now);
Parameters.ParamByName('UAct_Usr_ID').Value := 1;
ExecSQL;
end;
Except
DM.ADOConnection.RollbackTrans;
ShowMessage('RollBack');
Exit;
End;
dm.ADOConnection.CommitTrans;
ShowMessage('Commite');
end;
发件人:
分辨率:
使用不同的光标类型,更改
指向adUseClient或adUseClient的光标位置
关闭之前的第一个记录集
在同一台计算机上打开另一台计算机
连接/事务
原因:
SQL Server只能打开一个
一次只向前移动一个光标
连接,因为SQL Server可以
一次只处理一条活动语句
每次连接的时间
当您尝试打开多个
一次仅转发ADO记录集
单个连接,仅第一个连接
ADO记录集实际上是在上打开的
连接对象。新的,分开的
将为后续操作创建连接
只有游标
一个交易是在一个单独的平台上进行的
联系当你试图打开
多个ForwardOnly记录集
在单个事务中,ADO
尝试打开多个
服务器上的ForwardOnly记录集
交易的连接。一
发生错误的原因是仅SQL Server
在一个磁盘上允许一个ForwardOnly记录集
单连接。因为错误
在手动事务中,您
可能会看到上面的错误。微软
数据访问对象2.1 Service Pack 2
MDAC的更高版本包含
更多信息性错误消息。对于
因此,你可能会看到更多
第二个或第三个错误
留言,上面
尝试使用include-into。您能发布有问题的代码吗?我使用了所有游标类型,但没有一种有效:未指定、OpenForwardOnly、Keyset、Dynamic、Static