ADOConnection的数据库连接到底什么时候才断开(100分)

  • 主题发起人 主题发起人 ziyu
  • 开始时间 开始时间
Z

ziyu

Unregistered / Unconfirmed
GUEST, unregistred user!
我写的一个程序中,用ADOConnection连接SQL Server数据库。
恢复功能:断开ADOConnection---(连接到库的)之后,再用另一个ADOConnection----(只
连接到SQL Server,并未指定库)执行Restore语句,可是每次总提示此数据库正在使用。
连退出程序,手动执行SQL脚本恢复也不行。
到底, SQL Server的数据库连接什么时候才断开?
 
ADO断开后一分钟,我在Sql Server的Active Process观察的
 
一分钟后,那么长吗?那么我备份应该怎么写啊? Sleep吗?
 
呵呵,我没有测试过多长时间,不过,如果真的断开了,将会触发OnDisconnect事件,你可以
在这个事件中使用。
 
To: sundayboys
我用的是三层,和AppServer的连接都断开了,怎么能检测到ADO的OnDisconnect
 
可以试试:
USE YourOtherDatabaseName
命令引用其他数据库,这样就会释放原来在用的数据库。
 
如:你在自定义的Query或Execute 函数中加入如下的语句
var
FDataSet : _RecordSet;
begin
.......
FDataSet.Close;
FDataSet := nil;
end;
或当捃行Execute时加入Fconnect.close试试。

 
to 吴建明:
我以前做恢复程序是也遇到这样的问题。当时用过的方法就有你说的,不过不行。最后只好
是单单做一个恢复projrect来恢复。
 
问题出在连接池超时设定上,我没有对ADO用过这个超时设定,但对于ODBC我可以谈一下。
相信原理上应该是一样的,你可以通过ADO的API函数进行修改。
在ODBC中默认的连接池超时设定是60秒种(刚好是一分钟呀),在常用的数据库中
SQL SERVER和ORACLE是这样的,而VF ACCESS 等则没有没有超时(也就是为0),
所以在VF ACCESS中不会遇到这个问题——除非手动修改了设置。对于这个设置,
你可以在“控制面板-ODBC-连接池”去看,我想解决就不用我说了——
问题找出来了,相信能够解决
 
好象有点眉目了
 
试一下吧,如果有问题再说,具体你可以看看ADO、ODBC、OLE DB的书,比较好的书都有介绍
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部