2017-05-24 70 views
0

アプリケーションプールがリサイクルされるたびに、SQL Serverをc#アプリケーションから接続する際に、次のエラーが発生しています。私はこのエラーが実際には200(私はweb.configで設定されている)であるにもかかわらず、データベースに開いている20の接続しかないことを確認しました。SQL Server:最大プールサイズに達しました

また、接続はコードで正しく閉じられているため、問題は発生しません。プールがリサイクルされるたびに発生するのではなく、システムにトラフィックが発生した日に発生することに注意してください。

System.InvalidOperationException:タイムアウトが切れています。プールから接続を取得する前に、タイムアウト期間 が経過しました。プールされた接続がすべて使用され、最大プールサイズが に達したため、 が発生している可能性があります。 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection System.Data.ProviderBase.DbConnectionClosed.TryOpenConnectionで(たDbConnection owningConnection、TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1回のリトライ、DbConnectionOptions userOptions)(たDbConnection outerConnection、DbConnectionFactoryはconnectionFactory、 TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource 1リトライ)で System.Data.SqlClient.SqlConnection.OpenでSystem.Data.SqlClient.SqlConnection.Openで System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 リトライ)()()で

答えて

0

これを試してみてください:

SqlConnection cn = new SqlConnection(strCn); 
    try 
    { 
     using (SqlCommand cmd = new SqlCommand("select * from xxxx", cn)) 
     { 
      cn.Open(); 

      //do something 

      cn.Close(); 
     } 
    } 
    catch (Exception exception) 
    { 
     cn.Close(); 
     throw exception; 
    } 
+0

おかげで、ダークウッドが、私はすでに接続が正しくコード内で閉じられていることに言及。私は最終的にブロックでそれを閉じた。 –

+0

これで問題はありませんが、操作の正常終了時またはエラーの発行前に直ちに接続を閉じることをお勧めします。ありがとう – darkwood

関連する問題