连接超时导致导致所有客户端程序都不能使用

时间:2021-08-14 14:51:09
delphi7程序+winserver2003+sql2000  有时会出现连接超时,更严重的是所有的客户端都会出现这样的提示而无法使用,只能把服务器重启了就正常工作了!

为什么会所有客户端都不能使用呢,有什么办法可以解决

16 个解决方案

#1


把連接時間修改一下呢。。。

eg:

CommandTimeout:=300;
ConnectionString:=3;


#2


还没解决啊?sql2000还是连接限制数为1的个人版?

#3


如果不是,那是不是有什么语句执行造成死锁什么的呢?

#4


ado直接连数据库?

#5


procedure TData1.DataModuleCreate(Sender: TObject);
begin
 ini:=TInifile.Create(ExtractFilePath(paramstr(0))+'myini.ini');   //获取应用程序
 try
          ServerIP:=ini.ReadString('ServerInfo','ServerIP','');
          sQLDBName:=ini.ReadString('ServerInfo','sQLDBName','');
          SQLUserID:=ini.ReadString('ServerInfo','SQLUserID','');
          SQLPwd:=ini.ReadString('ServerInfo','SQLPwd','');
          version:=ini.ReadString('ServerInfo','version','');
      finally
          ini.Destroy;
      end;


 ADOConnection1.Connected:=false;
ADOConnection1.ConnectionString:= 'Provider=SQLOLEDB.1;Password='+SQLPwd+';Persist Security Info=True;User ID='+SQLUserID+';Initial Catalog='+SQLDBName+';Data Source='+ServerIP+'';
  try
      ADOConnection1.Connected := true;

          except
              on   e:exception   do   begin
                  showmessage('网络故障!请配置网络连接!');
                    application.Terminate;
                    exit;
              end;

end;


end;


登录没有问题的,不知道什么时候出现问题,登录不上不会影响到其它电脑,sql2000没问题,别人程序也用这个sql2000,也不止五台电脑,应该没有关系

#6


有没有办法可以跟踪一下,是哪个存储过程是不是出了问题

#7


不是有Profiler吗?

#8


引用 7 楼 goodhj 的回复:
不是有Profiler吗?


挺难的,一般要五天左右才会出问题!搞不清楚哪里出问题,我把sql 2000server 的登录时间和分析器的查询时间都设为30秒,CommandTimeout:=0;
ConnectionString:=3;看有没有用

#9


学习!

#10


SQL升级吧。

#11


引用 10 楼 lyhoo163 的回复:
SQL升级吧。


sql2000+sp4

#12


这个问题我以前给别人做程序也遇见过 

也是5 6 天以上就出现问题  

当时检查了 服务器和程序  
结果发现时另外一个程序的问题(都去调用了一个东西,造成服务器sql堵塞)

也没有找到到底是哪里堵塞了 
反正就是将另一个程序改了就OK


我说这个  意思就是说  看有没有可能是其他程序的冲突问题

#13


引用 12 楼 kobaer 的回复:
这个问题我以前给别人做程序也遇见过 

也是5 6 天以上就出现问题  

当时检查了 服务器和程序  
结果发现时另外一个程序的问题(都去调用了一个东西,造成服务器sql堵塞)

也没有找到到底是哪里堵塞了 
反正就是将另一个程序改了就OK


我说这个 意思就是说 看有没有可能是其他程序的冲突问题



我把数据库服务器也换了,还是这样,难道客户端有问题

#14


服务器要升级到SP4
客户端要把服务器升及好,在system32中有9个dll文件考到客户机的system32(win2000以上系统)目录下
9个文件是:dbmsadsn.dll,dbmsgnet.dll,dbmsqlgc.dll,dbmsrpcn.dll,dbmsvinn.dll,dbnetlib.dll,
dbnmpntw.dll,msvcr71.dll,ntwdblib.dll

#15


引用 14 楼 jhsullivan 的回复:
服务器要升级到SP4
客户端要把服务器升及好,在system32中有9个dll文件考到客户机的system32(win2000以上系统)目录下
9个文件是:dbmsadsn.dll,dbmsgnet.dll,dbmsqlgc.dll,dbmsrpcn.dll,dbmsvinn.dll,dbnetlib.dll,
dbnmpntw.dll,msvcr71.dll,ntwdblib.dll



服务器我升级了,这9个dll什么意思呀,我是二层结构的,有这么麻烦吗

#16


若是偶然现象,可能是网络问题
把ADOCONNECTION的连接超时时间设置长些看看
再不行就写个循环,比如尝试3次,也许第2次连上了

#1


把連接時間修改一下呢。。。

eg:

CommandTimeout:=300;
ConnectionString:=3;


#2


还没解决啊?sql2000还是连接限制数为1的个人版?

#3


如果不是,那是不是有什么语句执行造成死锁什么的呢?

#4


ado直接连数据库?

#5


procedure TData1.DataModuleCreate(Sender: TObject);
begin
 ini:=TInifile.Create(ExtractFilePath(paramstr(0))+'myini.ini');   //获取应用程序
 try
          ServerIP:=ini.ReadString('ServerInfo','ServerIP','');
          sQLDBName:=ini.ReadString('ServerInfo','sQLDBName','');
          SQLUserID:=ini.ReadString('ServerInfo','SQLUserID','');
          SQLPwd:=ini.ReadString('ServerInfo','SQLPwd','');
          version:=ini.ReadString('ServerInfo','version','');
      finally
          ini.Destroy;
      end;


 ADOConnection1.Connected:=false;
ADOConnection1.ConnectionString:= 'Provider=SQLOLEDB.1;Password='+SQLPwd+';Persist Security Info=True;User ID='+SQLUserID+';Initial Catalog='+SQLDBName+';Data Source='+ServerIP+'';
  try
      ADOConnection1.Connected := true;

          except
              on   e:exception   do   begin
                  showmessage('网络故障!请配置网络连接!');
                    application.Terminate;
                    exit;
              end;

end;


end;


登录没有问题的,不知道什么时候出现问题,登录不上不会影响到其它电脑,sql2000没问题,别人程序也用这个sql2000,也不止五台电脑,应该没有关系

#6


有没有办法可以跟踪一下,是哪个存储过程是不是出了问题

#7


不是有Profiler吗?

#8


引用 7 楼 goodhj 的回复:
不是有Profiler吗?


挺难的,一般要五天左右才会出问题!搞不清楚哪里出问题,我把sql 2000server 的登录时间和分析器的查询时间都设为30秒,CommandTimeout:=0;
ConnectionString:=3;看有没有用

#9


学习!

#10


SQL升级吧。

#11


引用 10 楼 lyhoo163 的回复:
SQL升级吧。


sql2000+sp4

#12


这个问题我以前给别人做程序也遇见过 

也是5 6 天以上就出现问题  

当时检查了 服务器和程序  
结果发现时另外一个程序的问题(都去调用了一个东西,造成服务器sql堵塞)

也没有找到到底是哪里堵塞了 
反正就是将另一个程序改了就OK


我说这个  意思就是说  看有没有可能是其他程序的冲突问题

#13


引用 12 楼 kobaer 的回复:
这个问题我以前给别人做程序也遇见过 

也是5 6 天以上就出现问题  

当时检查了 服务器和程序  
结果发现时另外一个程序的问题(都去调用了一个东西,造成服务器sql堵塞)

也没有找到到底是哪里堵塞了 
反正就是将另一个程序改了就OK


我说这个 意思就是说 看有没有可能是其他程序的冲突问题



我把数据库服务器也换了,还是这样,难道客户端有问题

#14


服务器要升级到SP4
客户端要把服务器升及好,在system32中有9个dll文件考到客户机的system32(win2000以上系统)目录下
9个文件是:dbmsadsn.dll,dbmsgnet.dll,dbmsqlgc.dll,dbmsrpcn.dll,dbmsvinn.dll,dbnetlib.dll,
dbnmpntw.dll,msvcr71.dll,ntwdblib.dll

#15


引用 14 楼 jhsullivan 的回复:
服务器要升级到SP4
客户端要把服务器升及好,在system32中有9个dll文件考到客户机的system32(win2000以上系统)目录下
9个文件是:dbmsadsn.dll,dbmsgnet.dll,dbmsqlgc.dll,dbmsrpcn.dll,dbmsvinn.dll,dbnetlib.dll,
dbnmpntw.dll,msvcr71.dll,ntwdblib.dll



服务器我升级了,这9个dll什么意思呀,我是二层结构的,有这么麻烦吗

#16


若是偶然现象,可能是网络问题
把ADOCONNECTION的连接超时时间设置长些看看
再不行就写个循环,比如尝试3次,也许第2次连上了