首先感谢zjcxc的回复!我再详细介绍一下我的应用的情况:
界面用VC,与SQL相连用dblib;在SQL端,修改、增加、删除数据均采用自己编写的SP,并且SP返回处理的结果,根据返回的结果,应用程序给出相应的提示信息。
以下就是我的一个SP:CREATE procedure mysp_dj
 @CurGkxm char(10),
 @CurFjh char(10),
 @CurJqhm char(11),
 @CurJqfs int,
 @CurSTime char(20),
 @CurETime char(20),
 @CurYajin money,
 @CurRzdj char(10)asdeclare @CurError int
declare  @Cnt intif (@CurJqfs=3 or @CurJqfs=5)
begin
select @Cnt=count(*) from lt_bgjf where jqhm=@CurJqhm and jsbz_a=0
if @Cnt>0
begin
                  /*第一种出错的情况*/
select -1
return
end
endbegin transaction
select @Cnt=count(*) from lt_auth where nbr=@CurJqhm
if @Cnt>0
begin
update lt_auth ......
end
else
begin
insert into lt_auth  ......
endselect @CurError=@@Error
if @CurError<>0
begin
         /*第二种出错的情况,回滚事务*/
rollback transaction
select -2
return
endinsert into lt_bgjf  ......select @CurError=@@Error
if @CurError<>0
begin
         /*第三种出错的情况,回滚事务*/
rollback transaction
select -3
return
endcommit transaction/*没有错误发生,返回0*/
select 0
return上面这个存储过程在查询分析器中单独执行都没有问题!难道是我的界面程序有问题?

解决方案 »

  1.   

    存储过程应该没有什么问题.
    估计与dblib与关.
      

  2.   

    这是联机帮助上的说明:DB-Library(级别 1)
    SQL Server 6.x SQL Server 2000 
    DB-Library 的两阶段提交特殊库管理跨两个或多个服务器分布的事务。 不再支持 DB-Library 两阶段提交。使用 Microsoft 分布式事务处理协调器 (MS DTC) 完成两个服务器上的同时更新。删除所有对 DB-Library 两阶段提交的引用。  
    DB-Library 应用程序可在 Microsoft&reg; Visual Basic&reg; 中开发。 不再支持 DB-Library for Visual Basic 的开发库。现有的 DB-Library for Visual Basic 应用程序的将对 SQL Server 2000 运行,但是必须使用 SQL Server 6.5 的开发库对其进行维护。所有用于访问 SQL Server 的新编写的 Visual Basic 应用程序应使用 Visual Basic 数据 API,例如,ActiveX 数据对象 (ADO) 和远程数据对象 (RDO)。 
      

  3.   

    如果你使用的是ado对象,试试安装最新的mdac2.8
      

  4.   

    非常感谢 zjcxc(邹建)兄的指教!看来真是SQL2000对dblib的支持有所变化的原因!
    我只有使用另外的数据库访问了!