用户已经在用的三层结构的系统在运行中服务器上出现严重问题,某个关键函数中的TADOQuery.Open失败,在系统日志中查到错误信息是 “无效的授权说明”。网上已经许多用户问过一样的问题,但答案都不符合我的情况。我的情况是:
1
scktsrvr.exe已经启动2
数据库密码不是空,中间也没有空格3
TADOConnection 的ConnectionString值类似:
Provider=SQLOLEDB.1;Password=%s; User ID=%s ;Initial Catalog=%s ;Data Source=%s;4
并不是服务器启动后就出现该问题,而是一直使用非常频繁的函数(用途:创建不重复ID,并把最新ID值记录在数据库)在使用一段时间后出现问题。5
已经做了容错处理,
Try
AdoQuery.open;
except
try
AdoQuery.Close;
AdoQuery.open;
except
on e:Exception do
WriteToLog(e.Message);
end;
end;非常着急,我们的技术总监都解决不了。
1
scktsrvr.exe已经启动2
数据库密码不是空,中间也没有空格3
TADOConnection 的ConnectionString值类似:
Provider=SQLOLEDB.1;Password=%s; User ID=%s ;Initial Catalog=%s ;Data Source=%s;4
并不是服务器启动后就出现该问题,而是一直使用非常频繁的函数(用途:创建不重复ID,并把最新ID值记录在数据库)在使用一段时间后出现问题。5
已经做了容错处理,
Try
AdoQuery.open;
except
try
AdoQuery.Close;
AdoQuery.open;
except
on e:Exception do
WriteToLog(e.Message);
end;
end;非常着急,我们的技术总监都解决不了。
解决方案 »
- delphi strtodatetime和fromatdatime问题
- SQL:如何取得数据库中记录数
- 请问在Delphi中一个函数里如何等待另一个事件的发生?
- 想得到dbedit1连的数据表:dbedit1.datasource.DataSet.tablename为什么这样不行呢?
- 怎么拦截串口程序传给硬件的数据
- 谁能解释一下C/S结构与三层结构有何区别?
- 很简单的问题,一时想不起来,大家快来帮忙
- 如何取得WINDOWS系统内在的所有图标,是否要用到系统图象别表,我现在只能有SHgetfileinfo函数得到系统图象列表的句柄
- 关于INTERBASE的三个问题
- 共享软件的注册部分是怎么编的?
- fastreport3中如何设定交叉表的每列宽度?
- 一个关于三层结构的问题
1、用户过多或有效连接过多导致服务器的连接限制已满
2、ADOquery最好用手动创建的,并且它指向一个共享连接
3、买个正版的吧
最大的可能是数据库服务器连接用户过多,共享连接是很好的解决方法。
基本同意2、ADOquery最好用手动创建的,并且它指向一个共享连接
这样没有用
要么建一个连接同步访问
要么做一个连接池来同步访问(推荐)
否则将导致‘占线’错误~~
1
务器的连接限制是 ADOConection的连接限制吗?ADOConection没有连接限制吧?
是MS SQL SERVER的连接限制吗,我查过了@@MAX_CONNECTIONS(同时用户连接的数目)值为32767。而
我的情况是客户端机器数据大约是50,不会达到这个数目。
2
AdoQuery连接用ADOConnection是RemoteDatamodule中的ADOConnection,不是共享的(每个客户端连接都会创建一个线程)。