Delphi7+Win2003+SQL2000开发的3层结构,
server端全部使用dbexpress的SQLStoredproc调用存储过程,ISocketDataModule中设置了10个带参数方法(都是调用存储过程的),
client端用appserver.方法(server端中的10个方法)调用。
在Delphi7+Win2003+SQL2000开发环境中运行正常,
但我在Delphi7+Win2000+SQL2000开发环境下运行时,如果先执行 appserver.方法1 调用了需要update数据库的存储过程后,
那么再执行 appserver.方法2 也调用了需要update数据库的存储过程,则出错!(SQL Server Error: SQL State: HY000, SQL Error Code: 0.)反过来:
如果先执行 appserver.方法2 调用了需要update数据库的存储过程后,
那么再执行 appserver.方法1 也调用了需要update数据库的存储过程,则出错!(SQL Server Error: SQL State: HY000, SQL Error Code: 0.)如果执行的appserver.方法3 调用了select或delete数据库的方法,则不会出错!
也就是说只要不update数据库,appserver.方法 就能执行,
而要uddate数据库的 appserver.方法 只能执行1个(可以执行n次),另一个不能执行!
但在Delphi7+Win2003+SQL2000下不会出以上错误!(我在WinXP和Win2000下测试都出现上面的错误!)
请高手指点,先谢谢!
server端全部使用dbexpress的SQLStoredproc调用存储过程,ISocketDataModule中设置了10个带参数方法(都是调用存储过程的),
client端用appserver.方法(server端中的10个方法)调用。
在Delphi7+Win2003+SQL2000开发环境中运行正常,
但我在Delphi7+Win2000+SQL2000开发环境下运行时,如果先执行 appserver.方法1 调用了需要update数据库的存储过程后,
那么再执行 appserver.方法2 也调用了需要update数据库的存储过程,则出错!(SQL Server Error: SQL State: HY000, SQL Error Code: 0.)反过来:
如果先执行 appserver.方法2 调用了需要update数据库的存储过程后,
那么再执行 appserver.方法1 也调用了需要update数据库的存储过程,则出错!(SQL Server Error: SQL State: HY000, SQL Error Code: 0.)如果执行的appserver.方法3 调用了select或delete数据库的方法,则不会出错!
也就是说只要不update数据库,appserver.方法 就能执行,
而要uddate数据库的 appserver.方法 只能执行1个(可以执行n次),另一个不能执行!
但在Delphi7+Win2003+SQL2000下不会出以上错误!(我在WinXP和Win2000下测试都出现上面的错误!)
请高手指点,先谢谢!
大家知道企业版功能更强大,而个人版或开发版则功能受到限制,
限制包括连接数、并发个数、事务等。
如果不是,则考虑其他情况。// 建议:如果不是数据库版本的问题,可以考虑一下是不是update的存储过程里面
启动了事务的情况下没有提交,或是出现异常,没有回滚,造成锁表的情况,
因为对于select,delete和update语句,锁表造成的结果是不一样的,
select 不会受到影响,而update则不行。如果有什么问题,欢迎继续讨论
建议检查存储过程,可以将存储过程的代码只写一行update,或者干脆什么都不写,直接返回,看还有问题吗?
然后再逐渐吧代码加上去另外,可以写一个测试程序,在本地用直接调用存储过程,开有这样的问题吗?
但是为什么我家里的dbexpmss.dll不会出错!
原因还是不明!
反正dbexpmss.dll问题很多,我不打算用这个驱动了.Borland明知有bug也不更正,多少年了还是提供这么个问题驱动!
也不知道在打什么算盘?有人说是和microsoft的竞争关系的原因.
IdAntiFreeze在这里用了也没用,或是我不会用.分数少我可以加的,上面的回答的朋友虽没解决我的问题,但也有辛苦分的.本人不会拖着不结帖的!