2

C++ SQLDriverConnect を使用して、バックエンドの MS SQL Server に接続します。属性を介して、ログイン タイムアウト (SQL_ATTR_LOGIN_TIMEOUT) のパラメーターを設定できます。これは、SQLDriverConnect (ログインの一種) にかかる時間を定義します。

ここで、サーバーで SQL サービスを停止すると、このタイムアウトが尊重され、関数を呼び出してからちょうど X 秒後に接続エラーが発生しますが、これはもちろん正しいことです。ただし、サービスを停止せずに、サーバーからネットワーク アダプターを無効にし、サーバーのネットワーク ケーブルを引き抜くと、SQLDriverConnect はこのタイムアウトを考慮せず、後でしか返されません。

たとえば、タイムアウトを 5 秒に設定すると、SQL サーバーがダウンしている場合、SQLDriverConnect は 53 秒後にのみ戻ります。

これは、X 秒後にいつでも戻ることができる独自の非同期接続を作成することで解決できることを知っていますが、可能であれば、これを行わず、提供された関数とオプションを使用して接続を制御したいと思います。

遅延は、ホストを見つけようとしているネットワーク スタックが原因であると思いますが、そのようなことを心配する必要がないことを確認するためだけに、タイムアウトのある高レベルの API を使用するというのが私の考えです。 ..

これを「修正」する方法についてのアイデアはありますか?

thx事前に

ウィム

4

1 に答える 1

0

SQL_ATTR_CONNECT_TIMEOUT を使用してみましたか?

于 2014-03-17T20:55:59.287 に答える