我们使用C ++ SQLDriverConnect连接到我们的后端MS SQL Server。通过这些属性,可以为登录超时(SQL_ATTR_LOGIN_TIMEOUT)设置一个参数,该参数定义了SQLDriverConnect(这是一种登录类型)所需的时间。
现在,如果我停止服务器上的SQL服务,这个超时会得到尊重,并且在调用函数后的X秒之后我会得到我的连接故障,这当然是正确的。 但是,如果我不停止服务,但是,从服务器禁用网络适配器,我们拔出服务器的网络电缆,SQLDriverConnect不尊重此超时,并且仅在稍后返回很多。
例如,将超时设置为5秒时,如果SQL服务器关闭,则SQLDriverConnect仅在53秒后返回。
我知道这可以通过自己的异步连接来解决,我可以在X秒后总是返回,但是,如果可能的话,我宁愿不这样做,只是使用提供的函数和选项来控制连接
我认为延迟是由尝试查找主机的网络堆栈引起的,但我的想法是我们使用更高级别的API并暂停,以确保我们不必担心这些事情......
关于如何“修复”的任何想法?
事先提前维姆
答案 0 :(得分:0)
您是否尝试过使用SQL_ATTR_CONNECT_TIMEOUT?