У меня есть процесс импорта, который работает как служба Windows (режим отладки как приложение), и он обрабатывает различные XML-документы и CSV-файлы и импортирует их в базу данных SQL. Все было хорошо, пока мне не пришлось обрабатывать большой объем данных (120 тыс. Строк) из другой таблицы (как я это делаю с документами xml).
Теперь я обнаружил, что использование памяти сервером SQL достигает точки, в которой он просто зависает. Мое приложение никогда не получает тайм-аут с сервера, и все просто останавливается.
Я все еще могу делать вызовы на сервер базы данных отдельно, но этот поток приложения просто застрял без очевидного потока в SQL Activity Monitor и без активности в Profiler.
Буду очень признателен за любые идеи о том, с чего начать решение этой проблемы, поскольку мы боремся с ней уже более недели.
Базовая архитектура - c # 2.0, использующая NHibernate, поскольку данные ORM извлекаются в реальную логику c # и обрабатываются, а затем направляются обратно в ту же базу данных вместе с журналами в другие таблицы.
Единственная другая проблема, которая иногда возникает вместо этого, заключается в том, что по какой-то причине курсор открывается на этой массивной таблице, и я могу только предположить, что он генерирует из ADO.net оператор, такой как exec sp_cursorfetch 180153005,16,113602,100 в соответствии с Profiler
вызывается тысячи раз