• 11754阅读
  • 5回复

连接SqlServer设置超时时间 [复制链接]

上一主题 下一主题
离线youyou1986
 

只看楼主 倒序阅读 楼主  发表于: 2014-08-13
情况是这样的:用Qt5的QSqlDatabase连接SqlServer的时候用open来打开数据,但是如果设置的数据库IP地址时指定一个错误的IP地址,这时open会一直阻塞不会返回,参考文档里面说用setConnectOptions可以设置连接属性,但是setConnectOptions("SQL_ATTR_LOGIN_TIMEOUT=3;SQL_ATTR_CONNECTION_TIMEOUT=600")以后还是一样会阻塞不返回。请问有什么方法可以设置open的超时时间吗?
离线leecpp

只看该作者 1楼 发表于: 2014-08-13
你好,设置
SQL_ATTR_LOGIN_TIMEOUT=3;
SQL_ATTR_CONNECTION_TIMEOUT=5
是可以设置超时时间的,你把数值改小一些就能测出效果了.
离线youyou1986

只看该作者 2楼 发表于: 2014-08-13
回 leecpp 的帖子
leecpp:你好,设置
SQL_ATTR_LOGIN_TIMEOUT=3;
SQL_ATTR_CONNECTION_TIMEOUT=5
是可以设置超时时间的,你把数值改小一些就能测出效果了. (2014-08-13 12:42) 

发帖前我就测试过,每次都是大约需要一分钟左右才会返回,不知道这个SQL_ATTR_LOGIN_TIMEOUT和 SQL_ATTR_CONNECTION_TIMEOUT后面设置的数字的单位是什么。如果是秒的话那设置就没有任何作用!
离线yanwuyue

只看该作者 3楼 发表于: 2016-09-09
我也碰到这个问题,总算是解决了,
这两个值都不能小于5,也就是说最少要等5秒,小于这个值等于没设
离线runjie

只看该作者 4楼 发表于: 2019-09-25
回 yanwuyue 的帖子
yanwuyue:我也碰到这个问题,总算是解决了,
这两个值都不能小于5,也就是说最少要等5秒,小于这个值等于没设 (2016-09-09 09:46) 

可以看下你具体setConnectOptions()函数的位置及里面的参数吗?我将它放在open前试过、addDateBase后试过,5秒6秒也试过都不起作用,一直阻塞
离线runjie

只看该作者 5楼 发表于: 2019-09-26
回 runjie 的帖子
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说明
快速回复
限100 字节
 
上一个 下一个