DCOM连接问题 (100分)

  • 主题发起人 主题发起人 jackyhuangcn
  • 开始时间 开始时间
J

jackyhuangcn

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾,小弟有一程序,用DCOM连接应用程序服务器,应用程序服务器用BDE连接
SYBASE数据库时,过一会儿,连接会自动断开,请问这是什么原因,有什么办法解决吗?
很急。
 
DCOM不是用来连接数据库的,而是用来连接应用服务器的。应用服务器再通过数据引擎(如
BDE)连接SYBASE数据库。你所说的自动断开是客户端与应用服务器的连接断开还是应用服务
器与数据库的连接断开?
 
同意sachow
 
对不起,是我的问法不对。
和你说的一样,应用程序服务器是用BDE连接,这一层是没有问题的,我已经做过测试了,
我这两天又做了调试,最初提示的错误是:ct_cmd_alloc(),用户API层错误,
指定的连接以被标志为无效(DEAD)。
客户端用DCOM连接,据我分析也不会是DCOM连接的问题,因为我通过DCOM连接调用
应用程序服务器的过程是没问题的,但是用MIDAS组件的方法时,如果这个方法会返回
数据集那么就有这个错误。
今天上午我又调试了一下,上面的错无已经没有了,可是又提示新的错误,消息是:
ct_send(),用户API层,外部错误:这个过程不能执行,因为其他命令结构有未决定的
返回集。这是怎么回事?现在客户都在催了,真的很急。
 
还是要谢谢你(SACHOW)的提示,可是问题还没解决,先给你20分吧,
 
你的意思是不是客户端调用应用程序服务器上的方法时应用程序服务器与
数据库连接断开了吧,检查这个方法对数据库的操作,问题可能就在这里。
以前在sql server6.5上遇到过这样的问题,你可以把sql语句放到查询分
析器中执行一下看看结果。
 
设断点,逐行调试是我解决程序问题的不二法门。根据你的描述,找不到解决问题根源,所
以无法提出具有共通性的解决办法。
我认为下一步你应该做的是检查异常是在哪里出现的,是什么类型的异常,由谁抛出的,最
后还要判断一下故障是不是由于你的机器上的各个软件系统是不是混乱了,出而出现一些本
不该出的问题,让人白费工夫。
 
Sachow,你说的这个方法我已经用过了,我已经找出了问题的抛出点,是tclientdataset
组件在获取数据集的时候自动调用的tproviderconnection.getprovider()函数,函数的
执行没有问题,可是在函数退出的时候就有那个错误。至于机器的软件系统混乱的问题
应该是没有的,因为整个机器的软件系统都被重装过。
 
你确认是调用GetProvider()方法时出的错吗?应用服务器端是否正确设置了TDataSetProvider?
会不会是你自己写的方法里因为有内存访问错误(如缓冲区溢出之类)?由于保护机制,当
COM组件中出现这类错误时有时会自动终止进程,从而导致你看到的情况。
 
问题不在我自己写的方法,而是tclientdataset的方法,如open,refresh,findkey等,
provider的设定是在设计时设定好的,getprovider()函数能够通过providername属性
找到正确的支持者,可是在函数退出的时候却有错误。在出现这个错误后,在一段时间
内这个错误无法排除,但过一阵它有可能自己好了,在执行完一批插入,修改sql语句后
,这个问题又来了。还有一点很奇怪,在我的笔记本电脑上,连sql server数据库却没
有这个问题。
 
多人接受答案了。
 
后退
顶部