Kiedy używać SqlConnection.ClearAllPools () in c #
Zauważyłem, że mój kod nie działa poprawniesqlWrite.ExecuteNonQuery();
po wykonaniu 200 Wstaw zapytania w kilka sekund. Zawsze tak myślałemusing
upewni się, że zasoby są ponownie wykorzystywane prawidłowo i nic nie trzeba robić. Po raz pierwszy pojawia się ten błąd i od prawie 3 lat zajmuję się sql / c #, robiąc różne rzeczy.
<code>using (SqlConnection varConnection = Locale.sqlConnectOneTime(Locale.sqlDataConnectionDetails)) { using (var sqlWrite = new SqlCommand(preparedCommand, varConnection)) { sqlWrite.Parameters.AddWithValue("@var_agr_fname", var_agr_fname == "" ? (object) DBNull.Value : var_agr_fname); sqlWrite.ExecuteNonQuery(); } } public static SqlConnection sqlConnectOneTime(string varSqlConnectionDetails) { var sqlConnection = new SqlConnection(varSqlConnectionDetails); try { sqlConnection.Open(); } catch { DialogResult result = MessageBox.Show(new Form {TopMost = true}, "Błąd połączenia z bazą danych. Czy chcesz spróbować nawiązac połączenie ponownie?", "Błąd połączenia (000001)", MessageBoxButtons.YesNo, MessageBoxIcon.Stop); if (result == DialogResult.No) { if (Application.MessageLoop) { Application.Exit(); // Use this since we are a WinForms app } else { Environment.Exit(1); // Use this since we are a console app } } else { sqlConnection = sqlConnectOneTime(varSqlConnectionDetails); } } return sqlConnection; } </code>
Komunikat o błędzie:A transport-level error has occurred when sending the request to the server. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.)
Biorąc pod uwagę porady dlaten błąd Powinienem używaćSqlConnection.ClearAllPools();
aby upewnić się, że połączenia są resetowane lub odrzucane prawidłowo. Więc mogę go użyć, ale pytanie, gdzie go używać i kiedy? Jak się dowiedzieć, czy limit się załamie? Gdzie jest limit? na 50/150/200? czy powinienem używać go za każdym razem w pętli?