VB应用程序在sub main()用一全局变量获得数据库连接,数据库大约有50万条记录。查询时使用存储过程。刚进入程序主界面运行稳定,但当多个客户端(10个左右)访问时,有的客户端出现“连接超时“的对话框。小弟请各位高手分析一下出现此问题的可能的因素。还有,为什么客户端获得的数据库连接会突然出现连接超时?
10 个解决方案
#1
1:企业管理器->服务器->属性->连接->查询超时设定->改为0或一个较大的数
2: cn.connectiontimeout = 1000
2: cn.connectiontimeout = 1000
#2
选中Microsoft SQL Servers-->工具栏,工具-->选项-->高级-->查询超时-->改为0
选中Microsoft SQL Servers-->工具栏,工具-->选项-->高级-->连接超时-->改为0
ADO
NonnectionTimeout 连接时间长一点;
CommandTimeout 执行时间长一点!
选中Microsoft SQL Servers-->工具栏,工具-->选项-->高级-->连接超时-->改为0
ADO
NonnectionTimeout 连接时间长一点;
CommandTimeout 执行时间长一点!
#3
谢谢两位!但小弟不明白,为什么所有客户端都已获得数据库连接,但一旦他们同时查询或插入时会有的客户端出现连接超时问题。难道数据库服务器因为负荷过大,断开了同某客户端的连接。请高手指教?
#4
你的问题可能是命令处理超时而不是连接超时。当你处理的时候,由于多个客户端使用同一个资源,就会发生等待的情况,所以会出现超时。你可以修改COMMAND的超时时间进行处理。
#5
因为数据的实际处理不可能同时处理.所以有多个用户并发要求处理数据时,SQL会对处理的数据按照先后排序处理,这时,如果某个操作步骤要长时间,就会出现超时的问题.
#6
程序中用ADO连接,应该这样设置:
ConnectionTimeout=0 连接超时时间;
CommandTimeout=0 处理语句的超时时间;
为0是等待最长时间.
ConnectionTimeout=0 连接超时时间;
CommandTimeout=0 处理语句的超时时间;
为0是等待最长时间.
#7
Thanks to zjcxc(邹建),pengdali(大力 V3.0)
#8
右击
SQL Server Enterprise Manager ->Microsoft Server Group ->SQL Server Group ->your Registration ->Property->connections,
设置query time-out参数为0
SQL Server Enterprise Manager ->Microsoft Server Group ->SQL Server Group ->your Registration ->Property->connections,
设置query time-out参数为0
#9
因为数据的实际处理不可能同时处理.??
MSSQLSERVER是可以同时处理不同的数据的!!!
ConnectionTimeout=0 连接超时时间;
CommandTimeout=0 处理语句的超时时间;
配置很长的时间并不能解决根本的问题,你要分析是何原因,是你的MSSQLSERVER的处理速度,i/o的处理速度,T-SQL的教本需要优化...
MSSQLSERVER是可以同时处理不同的数据的!!!
ConnectionTimeout=0 连接超时时间;
CommandTimeout=0 处理语句的超时时间;
配置很长的时间并不能解决根本的问题,你要分析是何原因,是你的MSSQLSERVER的处理速度,i/o的处理速度,T-SQL的教本需要优化...
#10
1.你可以将数据库的恢复模式该为简单,这样可以减少对I/0的读写。
2.优化你的stored procedure找出在并发是可能造成DEADLOCK,WAIT的原因。
3.学会用PROFILER,SYSTEM PROFERMORMANCE UIOLITY,FN_TRACE_...等工具分析。
4.可以适当的增加数据的冗余,提高并发的性能。
5.可以将OS的pagefile和database的数据文件放在不同的磁盘。
2.优化你的stored procedure找出在并发是可能造成DEADLOCK,WAIT的原因。
3.学会用PROFILER,SYSTEM PROFERMORMANCE UIOLITY,FN_TRACE_...等工具分析。
4.可以适当的增加数据的冗余,提高并发的性能。
5.可以将OS的pagefile和database的数据文件放在不同的磁盘。
#1
1:企业管理器->服务器->属性->连接->查询超时设定->改为0或一个较大的数
2: cn.connectiontimeout = 1000
2: cn.connectiontimeout = 1000
#2
选中Microsoft SQL Servers-->工具栏,工具-->选项-->高级-->查询超时-->改为0
选中Microsoft SQL Servers-->工具栏,工具-->选项-->高级-->连接超时-->改为0
ADO
NonnectionTimeout 连接时间长一点;
CommandTimeout 执行时间长一点!
选中Microsoft SQL Servers-->工具栏,工具-->选项-->高级-->连接超时-->改为0
ADO
NonnectionTimeout 连接时间长一点;
CommandTimeout 执行时间长一点!
#3
谢谢两位!但小弟不明白,为什么所有客户端都已获得数据库连接,但一旦他们同时查询或插入时会有的客户端出现连接超时问题。难道数据库服务器因为负荷过大,断开了同某客户端的连接。请高手指教?
#4
你的问题可能是命令处理超时而不是连接超时。当你处理的时候,由于多个客户端使用同一个资源,就会发生等待的情况,所以会出现超时。你可以修改COMMAND的超时时间进行处理。
#5
因为数据的实际处理不可能同时处理.所以有多个用户并发要求处理数据时,SQL会对处理的数据按照先后排序处理,这时,如果某个操作步骤要长时间,就会出现超时的问题.
#6
程序中用ADO连接,应该这样设置:
ConnectionTimeout=0 连接超时时间;
CommandTimeout=0 处理语句的超时时间;
为0是等待最长时间.
ConnectionTimeout=0 连接超时时间;
CommandTimeout=0 处理语句的超时时间;
为0是等待最长时间.
#7
Thanks to zjcxc(邹建),pengdali(大力 V3.0)
#8
右击
SQL Server Enterprise Manager ->Microsoft Server Group ->SQL Server Group ->your Registration ->Property->connections,
设置query time-out参数为0
SQL Server Enterprise Manager ->Microsoft Server Group ->SQL Server Group ->your Registration ->Property->connections,
设置query time-out参数为0
#9
因为数据的实际处理不可能同时处理.??
MSSQLSERVER是可以同时处理不同的数据的!!!
ConnectionTimeout=0 连接超时时间;
CommandTimeout=0 处理语句的超时时间;
配置很长的时间并不能解决根本的问题,你要分析是何原因,是你的MSSQLSERVER的处理速度,i/o的处理速度,T-SQL的教本需要优化...
MSSQLSERVER是可以同时处理不同的数据的!!!
ConnectionTimeout=0 连接超时时间;
CommandTimeout=0 处理语句的超时时间;
配置很长的时间并不能解决根本的问题,你要分析是何原因,是你的MSSQLSERVER的处理速度,i/o的处理速度,T-SQL的教本需要优化...
#10
1.你可以将数据库的恢复模式该为简单,这样可以减少对I/0的读写。
2.优化你的stored procedure找出在并发是可能造成DEADLOCK,WAIT的原因。
3.学会用PROFILER,SYSTEM PROFERMORMANCE UIOLITY,FN_TRACE_...等工具分析。
4.可以适当的增加数据的冗余,提高并发的性能。
5.可以将OS的pagefile和database的数据文件放在不同的磁盘。
2.优化你的stored procedure找出在并发是可能造成DEADLOCK,WAIT的原因。
3.学会用PROFILER,SYSTEM PROFERMORMANCE UIOLITY,FN_TRACE_...等工具分析。
4.可以适当的增加数据的冗余,提高并发的性能。
5.可以将OS的pagefile和database的数据文件放在不同的磁盘。