Вопрос

Я работаю над чужим проектом, который интенсивно использует tableAdapters. Сайт работает, но регулярно добавляет запись в журнал событий:

  

" ExecuteReader требует открытого и   Доступное соединение. Связь   текущее состояние подключается. & Quot;

Сайт не генерирует исключение, хотя, если нет большого трафика (5+ запросов в секунду), исключение остается тем же, указывая на эту строку кода:

this.Adapter.Fill(dataTable);
  

Трассировка стека: в   System.Data.SqlClient.SqlConnection.GetOpenConnection (String   метод) в   System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute (String   метод, команда SqlCommand)

Как я могу остановить эту ошибку? Спасибо.

Оказывается, я получаю только половину изображения, ошибка, когда он выдает ошибку:

  

" Уже есть открытый DataReader   связано с этой командой, которая   должен быть закрыт первым. "

Это было полезно?

Решение

Я бы сказал, что вы, вероятно, используете одно и то же соединение для нескольких целей, и одна из них закрывается другим потоком.

Я бы порекомендовал добавить некоторую трассировку, чтобы выяснить, что происходит. Трудно отлаживать ошибки такого рода, которые вы получаете только в работе :(

Другие советы

Если кажется, что вы превысили допустимое количество открытых соединений с вашей базой данных. Это можно установить в строке подключения, задав значения для значений Min Pool Size и Max Pool Size. Я думаю, что по умолчанию 0 для минимального размера пула и 100 для максимального размера пула, но я не уверен.

Попробуйте изменить их и посмотрите, поможет ли это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top