2008-09-16 6 views
3

なぜ私は何が起こっているのか把握するのに困っている好奇心が強いです。断続的なタイムアウト例外が発生しています。私はそれが私たちの開発環境では再現できないので、ボリュームに関連していると確信しています。バンダイの解決策として、SQLコマンドのタイムアウトを60秒に引き上げようとしましたが、わかったように、これは役に立たないようです。タイムアウトのトラブルシューティングSqlExceptions

  • 2008年9月16日16時21分49秒
  • 2008年9月16日16:私は開始時刻と終了時刻を、ここで、失敗しているプロセスに私のログをチェックしているとき、ここで奇妙な部分が、です:22:19

私はコマンドタイムアウトを60に設定したときに、30秒でタイムアウトになることがありますか?

だけの参考のため、ここではスローされた例外があります:

System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. 
    at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 
    at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 
    at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 
    at System.Data.SqlClient.SqlDataReader.ConsumeMetaData() 
    at System.Data.SqlClient.SqlDataReader.get_MetaData() 
    at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 
    at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) 
    at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) 
    at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) 
    at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) 
    at System.Data.SqlClient.SqlCommand.ExecuteReader() 
    at SetClear.DataAccess.SqlHelper.ExecuteReader(CommandType commandType, String commandText, SqlParameter[] commandArgs) 

答えて

3

使用しているクエリの実行に時間がかかるため、SQLコマンドがタイムアウトします。クエリアナライザーまたはマネジメントスタジオでデータベースの代表量のデータをで実行し、実行計画を見て遅いものを見つけます。

「テーブルスキャン」または「クラスタ化インデックススキャン」と言われるものが多い場合は、その操作をキー検索に変換するインデックスを作成できるかどうかを調べます(インデックスシークまたはクラスタ化インデックスシーク)。

+0

新しいインデックスを追加する必要があることが判明しました:-) –

0

タイムアウトは、接続ではなく、コマンドで起こっているためではなく、コマンド

0

よりも、SqlConnectionオブジェクトのタイムアウトプロパティを変更してみてください。 connection.TimeOutプロパティを設定する必要があります

3

これは馬鹿に聞こえるかもしれませんが、私の声を聞いてください。クエリに含まれるすべてのインデックスとプライマリキーを確認します。彼らは存在しますか?彼らは断片化されていますか?私は問題を抱えていました。何らかの理由で、スクリプトを完全に実行するだけで検索できましたが、アプリケーションを使用したときに汚れが遅くなりました。読者は基本的にカーソルのように動作するので、索引付けは非常に重要です。

これはそうではないかもしれませんが、私がチェックするのは常に最初のことです。

0

私はこの問題を一度経験しました。データベースのビューのうちの1つで、実際には非効率なSQLコードを追跡しました。誰かが所属していたWHERE句ではなく、テーブル結合のON句にサブクエリを持つ複雑な条件を付けました。このエラーを修正すると、問題は解決されました。

関連する問題