none
(ごく低い確率で)クライアントで、「SQLサーバーが存在しないかアクセスできません。」エラーが発生する RRS feed

  • 質問

  • 本番環境にて300人ほどのクライアントに配布・常時稼働している.NETのWinForms
    アプリケーションがあります。このアプリで非常に稀に、特定のクライアントで
    「SQLサーバーが存在しないかアクセスできません。」エラーが発生します。

    現象を解明すべく以下のことを行いました。(以下、行った順に記述)
    ・不具合の起こっているPC実機にて、サーバーコンピュータへPINGを打つ
     ⇒通る(断続的に行っても常に通る) 
    ・不具合の起こったPC実機にて、サーバーコンピュータ内の共有フォルダに
    アクセス   ⇒アクセスできる。
    ・配布アプリを ①IPアドレス引きでの接続文字列で書かれたもの (本番アプリ)
              ②名前引きでの接続文字列で書かれたもの
    に分け、それぞれ接続トライ。
     ⇒上記のエラーがやはり発生。

    ・C:\windows\system32\drivers\etc\hosts
    にサーバーの [IPアドレス]    [コンピュータ名]  を追記・保存し接続をトライ
    ⇒すると上記②は繋がるようになる。  
    ⇒その直後、上記①も繋がるようになる。

    というような結果でした。
    当方としてはC:\windows\system32\drivers\etc\hostsへの追記の
    意味自体はあまり把握できておらず、どのような効果があったのか分かりませんが
    参考になると思うので書いておいた次第です。

    C:\windows\system32\drivers\etc\hostsへの追記以外の、もっと
    根本的な解決法や、原因の割り出し方法は無いでしょうか?

    宜しくお願いいたします。

    クライアントアプリ環境: Windows7 
                   .NET Framework 3.5 (アプリ内のドライバ: ADO 2.8)
    サーバー:WindowsServer2008 、 SQLServer2008
                 ※SQLServerはドメインには入っていません。

    2012年8月2日 0:36

回答

  • 接続文字列にIPアドレスを使用した①であれば、hostsファイルは参照しません。まだまだ原因究明ができていないと思われます。例えばSQL Serverへの接続・切断だけを繰り返すプログラムを作成し、状況を確認してみるのはどうでしょうか。

    • 回答としてマーク FELIKKS 2012年8月2日 1:21
    2012年8月2日 0:45
  • 特定のクライアントということですから、まずそのクライアントを疑うのが普通でしょう。例えばそのクライアントを他のクライアントと入れ替え(物理的にクライアントの位置を移動できなければ、刺さっているLANケーブルを入れ替える)、それでも同じ特定のクライアントで発生するのであれば、あきらかにその特定のクライアントに問題がありますし、入れ替えたクライアントで問題が発生するのであれば、特定のクライアントが接続されていたハブのポート、LANケーブルなどが疑われます。

    ところで、クライアントの機種やOS等は統一されているのでしょうか? 上記のテストで特定のクライアントに問題があることに絞れた場合、もし、そのクライアントが他のクライアントとは違う機種や状態であれば、ネットワーク関連のドライバを最新にしてみるなどの対策が考えられます。一方、もし、クライアントが統一されている場合は、単にその特定のクライアントのネットワークに関するハードウエアが疑わしいでしょう。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/


    • 編集済み trapemiya 2012年8月2日 1:14
    • 回答としてマーク FELIKKS 2012年8月2日 1:21
    2012年8月2日 1:12

すべての返信

  • 接続文字列にIPアドレスを使用した①であれば、hostsファイルは参照しません。まだまだ原因究明ができていないと思われます。例えばSQL Serverへの接続・切断だけを繰り返すプログラムを作成し、状況を確認してみるのはどうでしょうか。

    • 回答としてマーク FELIKKS 2012年8月2日 1:21
    2012年8月2日 0:45
  • 特定のクライアントということですから、まずそのクライアントを疑うのが普通でしょう。例えばそのクライアントを他のクライアントと入れ替え(物理的にクライアントの位置を移動できなければ、刺さっているLANケーブルを入れ替える)、それでも同じ特定のクライアントで発生するのであれば、あきらかにその特定のクライアントに問題がありますし、入れ替えたクライアントで問題が発生するのであれば、特定のクライアントが接続されていたハブのポート、LANケーブルなどが疑われます。

    ところで、クライアントの機種やOS等は統一されているのでしょうか? 上記のテストで特定のクライアントに問題があることに絞れた場合、もし、そのクライアントが他のクライアントとは違う機種や状態であれば、ネットワーク関連のドライバを最新にしてみるなどの対策が考えられます。一方、もし、クライアントが統一されている場合は、単にその特定のクライアントのネットワークに関するハードウエアが疑わしいでしょう。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/


    • 編集済み trapemiya 2012年8月2日 1:14
    • 回答としてマーク FELIKKS 2012年8月2日 1:21
    2012年8月2日 1:12
  • 接続文字列にIPアドレスを使用した①であれば、hostsファイルは参照しません。まだまだ原因究明ができていないと思われます。例えばSQL Serverへの接続・切断だけを繰り返すプログラムを作成し、状況を確認してみるのはどうでしょうか。

    そうですね、検討してみます。
    SQL Serverへの接続・切断だけを繰り返すプログラムを作成し、状況を確認してみるのはどうでしょうか。
    ただ、PINGは断続的に打って、通っていたんですよね。

    また、初回投稿に書いた一連の作業を行った結果、現象が解決してしまったので、
    現象の「再発待ち」という歯がゆい状況です。

    いずれにしても回答ありがとうございました。

    2012年8月2日 1:20
  • >ところで、クライアントの機種やOS等は統一されているのでしょうか? 

    統一されています。(初回投稿でもっと強調すべきでしたが)クライアント300人で常時稼働
    (同時接続数60人程)しており、半年に一度くらいの頻度で上記投稿の現象が特定クライアント
    にて発生しています。 

    クライアントが統一されている場合は、単にその特定のクライアントのネットワークに関するハードウエアが疑わしいでしょう。

    初回投稿に書いたように、「PING通っている/フォルダアクセスができている状態であるのにも関わらず」
    ハードウェア(ポート・LANケーブル)を疑うべき、ということでしょうか? そうであるならば
    次回発生時に、LANの差し替え等による比較検証を行って、原因の突き詰めを行って
    みようと思います。

    回答ありがとうございました。

    2012年8月2日 1:33
  • その特定のクライアントのイベントビューアとかに何かのエラーログが上がっているかもしれません。
    私もtrapemiyaさんと同じく、ハードウェア面が怪しいと思いますが、最近はファイヤーウォールとかの
    セキュリティソフトもクライアントマシンに入ってるので、そっちも疑わしいかなと思います。
    いずれにしても、ログが出ている可能性はあるので、もしまだだったら確認してみるといいと思います。
    2012年8月3日 0:53