2

我们使用 C++ SQLDriverConnect 连接到我们的后端 MS SQL Server。通过属性,可以设置登录超时参数 (SQL_ATTR_LOGIN_TIMEOUT),该参数定义 SQLDriverConnect(登录的一种)需要多长时间。

现在,如果我停止服务器上的 SQL 服务,则会遵守此超时,并且在调用该函数后 X 秒后,我将得到连接失败,这当然是正确的。但是,如果我不停止服务,而是从服务器禁用网络适配器,我们拔出服务器的网线,SQLDriverConnect 不遵守此超时,并且仅在很久以后才返回。

例如,将超时设置为 5 秒时,如果 SQL 服务器已关闭,则 SQLDriverConnect 仅在 53 秒后返回。

我知道这可以通过我自己的异步连接来解决,我总是可以在 X 秒后返回,但是,如果可能的话,我宁愿不这样做,而只使用提供的函数和选项来控制连接。

我假设延迟是由试图找到主机的网络堆栈引起的,但是,我的想法是我们使用具有超时的更高级别的 API 只是为了确保我们不必担心这些事情。 ..

关于如何“修复”这个问题的任何想法?

提前谢谢

维姆

4

1 回答 1

0

您是否尝试过使用 SQL_ATTR_CONNECT_TIMEOUT?

于 2014-03-17T20:55:59.287 回答