标题:连接SqlServer设置超时时间
作者:youyou1986
日期:2014-08-13 11:42
内容:
情况是这样的:用Qt5的QSqlDatabase连接SqlServer的时候用open来打开数据库,但是如果设置的数据库IP地址时指定一个错误的IP地址,这时open会一直阻塞不会返回,参考文档里面说用setConnectOptions可以设置连接属性,但是setConnectOptions("SQL_ATTR_LOGIN_TIMEOUT=3;SQL_ATTR_CONNECTION_TIMEOUT=600")以后还是一样会阻塞不返回。请问有什么方法可以设置open的超时时间吗?
#1 [leecpp 08-13 12:42]
你好,设置
SQL_ATTR_LOGIN_TIMEOUT=3;
SQL_ATTR_CONNECTION_TIMEOUT=5
是可以设置超时时间的,你把数值改小一些就能测出效果了.
#2 回 leecpp 的帖子 [youyou1986 08-13 13:40]
leecpp:你好,设置
SQL_ATTR_LOGIN_TIMEOUT=3;
SQL_ATTR_CONNECTION_TIMEOUT=5
是可以设置超时时间的,你把数值改小一些就能测出效果了. (2014-08-13 12:42)
发帖前我就测试过,每次都是大约需要一分钟左右才会返回,不知道这个SQL_ATTR_LOGIN_TIMEOUT和 SQL_ATTR_CONNECTION_TIMEOUT后面设置的数字的单位是什么。如果是秒的话那设置就没有任何作用!
#3 [yanwuyue 09-09 09:46]
我也碰到这个问题,总算是解决了,
这两个值都不能小于5,也就是说最少要等5秒,小于这个值等于没设
#4 回 yanwuyue 的帖子 [runjie 09-25 11:54]
yanwuyue:我也碰到这个问题,总算是解决了,
这两个值都不能小于5,也就是说最少要等5秒,小于这个值等于没设 (2016-09-09 09:46)
可以看下你具体setConnectOptions()函数的位置及里面的参数吗?我将它放在open前试过、addDateBase后试过,5秒6秒也试过都不起作用,一直阻塞
#5 回 runjie 的帖子 [runjie 09-26 14:29]
runjie:可以看下你具体setConnectOptions()函数的位置及里面的参数吗?我将它放在open前试过、addDateBase后试过,5秒6秒也试过都不起作用,一直阻塞 (2019-09-25 11:54)
破案了。
“SQL_ATTR_LOGIN_TIMEOUT=3”仅支持ODBC1.0。
“SQL_ATTR_CONNECTION_TIMEOUT”仅支持ODBC3.0。
所以一起使用时无效。不过,我设为3,Timeout返回的时间是短了,但还是多于3秒。
具体参数说明查看Microsoft 的SQLSetConnectAttr Function说明