none
SQLServer2008 で接続ができなくなります RRS feed

  • 質問

  • 初めて投稿します。makai974と申します。

    SQLServer2008 + Asp.net を使い社内向けのWebシステムを構築し運用しているのですが、昨日より以下の事象が発生し困っております。

    解決に向けてアドバイスをいただけたら幸いです。

    環境

      OS:Windows2008 StandardEdition SP2

      DB:SQLServer 2008

         

    事象:SQLServerへの接続が一切できなくなる。

       ・前述のWebシステムからのアクセスはもとより、クライアントからのSQL実行や、SQLServerをインストールしているサーバ上で Management Studioでも動作しません。

         尚、Management Studioへは、「サーバの接続」はできます。接続後、オブジェクトエクスプローラでのツリーの展開一つ一つが非常に遅く、テーブルのデザインを見ようとするとエラーとなります。(エラー内容は都度違う)

             時間を置いて実行するとアクセスできるようになります。ただし一度繋がらなくなると、SQLServerの再起動、OSの再起動をしても改善されません。とにかく待つしかないのが現状です。

       ・以前にも同様の事象が起きたのですが、その時はネットで接続プールの枯渇が怪しいとふみ、ASP.netでDBへアクセスしている箇所で明示的にcloseを記述したところ改善されました。

         改善後には新しいプログラムの追加などは行っておりません。また、Webシステム以外でDBにアクセスするのは私一人ですので上記対処以外が原因なのではないかと考えております。

    以上、よろしくお願いします。

    2011年8月11日 1:22

回答

  • ともかく状況確認するしかないと思います。

    Management StudioでSQL Serverに接続し、利用状況モニターを開き、様子を見てください。接続数が異様に多いとか、コストの高いクエリーが多数実行されているとか、原因が見えます。
    それを見て判断しましょう。 

    • 回答の候補に設定 山本春海 2011年8月30日 7:28
    • 回答としてマーク 山本春海 2011年9月2日 4:19
    2011年8月11日 2:03
  • 管理用接続で接続し、利用状況等を確認してみるところからですね。管理用接続を行うためには、プロトコル admin またはポート番号 1434(だったか?)を指定して接続します。たとえば、Server1\SQL1 に接続されているのであれば、admin:Server1\SQL1 で接続します。tcp:Server1,1433等につながれている場合には、tcp:Server1,1434 ですかね。(ファイアウォール等で管理接続ができない場合もあるので、繋がらないようであればサーバ上で実行されるとよいでしょう)

    # 時間をおいたらつながるようになるが、SQL Server を再起動してもつながらないというのは、ネットワーク等の障害も考えられますが


    • 回答の候補に設定 山本春海 2011年8月30日 7:28
    • 回答としてマーク 山本春海 2011年9月2日 4:19
    2011年8月11日 3:15
  • 利用状況モニターで何等か数値が大きそうなもの等が見当たらないとなると、SQL Serverに原因がないかもしれません。

    もっと一般的に、システム全体で、CPU使用率が高いとかメモリー使用量が多くスワップが発生しているとかディスクアクセスが多いとか、そういった兆候はないでしょうか?

    • 回答の候補に設定 山本春海 2011年8月30日 7:28
    • 回答としてマーク 山本春海 2011年9月2日 4:19
    2011年8月11日 11:52

すべての返信

  • ともかく状況確認するしかないと思います。

    Management StudioでSQL Serverに接続し、利用状況モニターを開き、様子を見てください。接続数が異様に多いとか、コストの高いクエリーが多数実行されているとか、原因が見えます。
    それを見て判断しましょう。 

    • 回答の候補に設定 山本春海 2011年8月30日 7:28
    • 回答としてマーク 山本春海 2011年9月2日 4:19
    2011年8月11日 2:03
  • 管理用接続で接続し、利用状況等を確認してみるところからですね。管理用接続を行うためには、プロトコル admin またはポート番号 1434(だったか?)を指定して接続します。たとえば、Server1\SQL1 に接続されているのであれば、admin:Server1\SQL1 で接続します。tcp:Server1,1433等につながれている場合には、tcp:Server1,1434 ですかね。(ファイアウォール等で管理接続ができない場合もあるので、繋がらないようであればサーバ上で実行されるとよいでしょう)

    # 時間をおいたらつながるようになるが、SQL Server を再起動してもつながらないというのは、ネットワーク等の障害も考えられますが


    • 回答の候補に設定 山本春海 2011年8月30日 7:28
    • 回答としてマーク 山本春海 2011年9月2日 4:19
    2011年8月11日 3:15
  • 佐祐理様

    ご返信いただきありがとうございます。

    利用状況モニターは使ってませんでしたので、早速開いてみました。開いてからも事象が既に何回か起きていますので監視していますが・・・

    接続数⇒「プロセス」のセッションIDを見る限り、特に以上はなさそうです。

    コストの高いクエリー⇒「Database Name」がtempdb か master の物がほとんどです。

    tempdb をキーワードにして調べてみたら、tempdbのディスク領域不足でもトラブルが起きる場合があるとでていましたので、サイズを調べてみたら以下の通りでした。

    情報ソース : http://msdn.microsoft.com/ja-jp/library/ms176029.aspx

    実行したクエリ:

     SELECT SUM(unallocated_extent_page_count) AS [free pages],
     (SUM(unallocated_extent_page_count)*1.0/128) AS [free space in MB]
     FROM sys.dm_db_file_space_usage;

    結果: free pages ・・・696、free space in MB・・・5.437500

    このあたりも影響しますでしょうか?

     

    2011年8月11日 4:22
  • K.Takaoka様

    ご返信いただきありがとうございます。

    管理用接続で利用状況を見る、とは具体的にはどういったやり方をすればよいのでしょうか?

    無知で申し訳ありませんが、ご教授いただけますとありがたいです。

    尚、DBサーバとWebサーバは同一のであるので、ネットワークの障害ではなさそうです。

     

    2011年8月11日 4:33
  • 前の投稿に書いていますが、症状がでて接続できない状態になっているときに、Management Studio から接続先に admin: をつけてください。

    通常の接続がいっぱいになっている状態でも、管理者用接続は接続可能な状況で予約されています。接続できなくなる理由がネットワークやメモリ等の物理的な要因にない限りは、接続できることをある程度は期待できます。接続できたら、利用状況を開くとかログをみるとか、繋がらない状態の SQL Server の状況を調査できるのではないでしょうか?

     

    2011年8月11日 6:41
  • K.Takaoka様

    ご説明いただきありがとうございました。理解できました。

    現状ですが、Web等からの接続がダメな場合でも、Management Studioには通常通り接続は出来ており、利用状況は確認可能です。Management Studioにも接続できなくなった場合は、管理者接続を利用してみたいと思います。

    2011年8月11日 8:44
  • 利用状況モニターで何等か数値が大きそうなもの等が見当たらないとなると、SQL Serverに原因がないかもしれません。

    もっと一般的に、システム全体で、CPU使用率が高いとかメモリー使用量が多くスワップが発生しているとかディスクアクセスが多いとか、そういった兆候はないでしょうか?

    • 回答の候補に設定 山本春海 2011年8月30日 7:28
    • 回答としてマーク 山本春海 2011年9月2日 4:19
    2011年8月11日 11:52