Превышенные системные ресурсы OleDbException

С Миллером ( http://johnkerl.org/miller/doc ) утилита командной строки, с

mlr --csv filter '$User=~".+"' then cut -o -f Date,User \
then uniq -a "Example Report.csv" | \
mlr --csv --headerless-csv-output  nest --implode --values --across-records -f User | \
sed -r 's/(,|;)/\n/g'

у вас есть

17/1/19
Beth Hook
CEO
John Smith
16/1/19
Peter Man
Jess Hare
Finn Tomb
John Smith
Finance
15/1/19
CEO
Peter Man
member 34
Beth Hook
John Smith
14/1/19
SYSTEM USER
Bin Stick
Peter Man
CEO
Partner
L Stick
Tie Cooler
member 16
John Smith
13/1/19
Partner
Peter Man
11/1/19
Wheels Hireman
Bunny
10/1/19
Bunny
member 36
Mary Stone
9/1/19
Bunny
Jus Wall
member 36

7
задан Pauly 1 October 2008 в 02:10
поделиться

4 ответа

Превышенная ошибка системных ресурсов не прибывает из управляемого кода, его прибытия от Вас уничтожающий Вашу базу данных (СТРУЯ?)

Вы открываете путь ко многим соединениям, путь к быстро...

Некоторые подсказки:

  • Избегайте распространений в прямом и обратном направлениях, не открывая новое соединение для каждой команды и выполните вставки с помощью единственного соединения.
  • Удостоверьтесь, что объединение соединения с базой данных работает (Не уверенный, если это работает с Подключениями OLEDB).
  • Рассмотрите использование более оптимизированного способа вставить данные.

Вы попробовали это?

using (OleDBConnection conn = new OleDBConnection(connstr))
{
    while (IHaveData)
    {
        using (OldDBCommand cmd = new OldDBCommand())
        {
            cmd.Connection = conn;
            cmd.ExecuteScalar();
        }
    }
}
6
ответ дан 7 December 2019 в 10:10
поделиться

В дополнение к вышеупомянутому (соединяющийся с базой данных только однажды), я также хотел бы удостовериться, что Вы закрываетесь и избавляетесь от своих соединений. Поскольку большинством объектов в c# управляют, wrt память, соединения и потоки всегда не имеют этой роскоши, поэтому если от объектов как это не избавятся, то они, как гарантируют, не будут очищены. Это имеет добавленный эффект отъезда того соединения, открытого для срока действия Вашей программы.

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

0
ответ дан 7 December 2019 в 10:10
поделиться

Я проверил этот код с базой данных Access 2007 без исключений (я пошел, целых 13000 вставляют).

Однако то, что я заметил, - то, что это ужасно медленно, поскольку Вы создаете соединение каждый раз. При помещении "использования (соединение)" вне цикла это идет намного быстрее.

1
ответ дан 7 December 2019 в 10:10
поделиться

Я не уверен в специфических особенностях, но я имею, натыкался на подобную проблему. Мы используем базу данных Access с IIS для обслуживания наших клиентов. У нас нет очень многих клиентов, но существует много соединений, открываемых и закрытых во время единственной сессии. Приблизительно после недели работы мы получаем ту же ошибку и весь сбой попыток подключения. Для исправления проблемы все, что мы должны были сделать, было перезапустить рабочие процессы.

После некоторого исследования я нашел (конечно), что Доступ не работает хорошо в этой среде. Ресурсы не становятся выпущенными правильно, и со временем исполняемый файл будет заканчиваться. Для решения этой проблемы мы собираемся переместиться в базу данных Oracle. Если это не решит проблему, то я буду держать Вас в курсе на своих результатах.

0
ответ дан 7 December 2019 в 10:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: