3

10 秒ごとに継続的に SQL Server データベース テーブルをクエリする Windows サービスがあり、25 秒後に同じデータベース テーブルをクエリする Web サイトもあります。

しばらくすると例外が発生します - server timeout exception has occurred。スタック オーバーフロー サイトを通過し、SQL 構成設定を変更しましたが、それでも同じ例外が発生しました。何をすべきか?

スタックトレース

System.Data.SqlClient.SqlConnection.OnError (SqlException 例外、ブール型 breakConnection) で System.Data.SqlClient.SqlInternalConnection.OnError (SqlException 例外、ブール型 breakConnection) で System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() で System.Data System.Data.SqlClient.SqlDataReader.ConsumeMetaData() の System.Data.SqlClient.SqlDataReader.get_MetaData() の System.Data.Data System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior、RunBehavior runBehavior、ブール値 returnStream、System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) で System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Stringメソッド) で System.Data.SqlClient.SqlCommand.ExecuteReader (CommandBehavior 動作、String メソッド) で System.Data.SqlClient.SqlCommand.ExecuteDbDataReader (CommandBehavior 動作) で System.Data.Common.DbCommand.ExecuteReader (CommandBehavior 動作)RunExecuteReader (CommandBehavior cmdBehavior、RunBehavior runBehavior、Boolean returnStream、String メソッド) で System.Data.SqlClient.SqlCommand.ExecuteReader (CommandBehavior 動作、String メソッド) で System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior 動作) で System.Data. Common.DbCommand.ExecuteReader(CommandBehavior 動作)RunExecuteReader (CommandBehavior cmdBehavior、RunBehavior runBehavior、Boolean returnStream、String メソッド) で System.Data.SqlClient.SqlCommand.ExecuteReader (CommandBehavior 動作、String メソッド) で System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior 動作) で System.Data. Common.DbCommand.ExecuteReader(CommandBehavior 動作)
Microsoft.Practices.EnterpriseLibrary.Data.Database.DoExecuteReader (DbCommand コマンド、CommandBehavior cmdBehavior) で Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteReader (DbCommand コマンド) で Microsoft.Practices.EnterpriseLibrary.Data.CommandAccessor 1.<Execute>d__0.MoveNext() at System.Collections.Generic.List1..ctor( IEnumerable 1 ソース) System.Runtime.Remoting.Messaging.Message.Dispatch(オブジェクト ターゲット、ブール値 fExecuteInContext) で System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg、Int32 methodPtr、ブール値 fExecuteInContext)1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable

4

1 に答える 1

1

コードを見せて!タイムアウト例外は通常、データベース接続を閉じていないためです。

アルゴリズムの最後にコードを追加してみてください

if (connection.State == System.Data.ConnectionState.Open)
    {
        connection.Close();
        connection.Dispose();
    }

EnterpriseLibrary を使用している場合は、commandTimeOut にさらに時間を追加してみてください

DbCommand dbcommand = database.GetStoredProcCommand("usp_TheStoredProcedureName");
dbcommand.CommandTimeout = 120;
于 2012-10-23T04:56:18.870 に答える