Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 System resource exceeded  [new]
Sergey Molchanov
Member

Откуда:
Сообщений: 83
Всем привет!
Создаю OleDbConnection со строкой
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=путь;Extended Properties=dBASE III;User ID=Admin;Password=
Затем OleDbCommand с режимом CommandType = TableDirect
Далее как обычно ExecuteReader(), чтение ридера от начала до конца, затем ридер закрывается, и закрывается соединение.
Это все работает в цикле. Грабли в том, что все работает ровно 1041 раз, затем при попытке выполнения ExecuteReader() вылетает исключение "System resource exceeded". И ридер, и конекшн в конце закрывается, что ж еще остается висеть?!
16 май 06, 16:41    [2670304]     Ответить | Цитировать Сообщить модератору
 Re: System resource exceeded  [new]
Sergey Molchanov
Member

Откуда:
Сообщений: 83
Ха! Тот же прикол наблюдается и с драйвером {Microsoft dBase Driver (*.dbf)}
И даже более того. Я создал файл 1.js, наполнил его следующим содержимым:
for (var i = 0; i <= 2000; i++)
{
	var Con = WScript.CreateObject("ADODB.Connection");
	Con.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=путь;Extended Properties=dBASE III;User ID=Admin;Password=");
	var Query = WScript.CreateObject("ADODB.RecordSet");
	Query.ActiveConnection = Con;
	Query.Open("SELECT поля FROM таблица");
	for (; !Query.Eof; Query.moveNext())
	{
	}
	Query.Close();
	Query = null;
	Con.Close();
	Con = null;
	if (!(i % 100))
	{
		WScript.Echo(i);
	}
}
И тот же "прикол". Так сказать, даже не доходя до использования дотНЕТа. Простите, что отошел от темы форума. Так что проблема не в НЕТе, а в самих OLE DB-драйверах... Неужели это неизлечимо? Или я упустил какой-то ньюанс?
16 май 06, 19:09    [2671202]     Ответить | Цитировать Сообщить модератору
 Re: System resource exceeded  [new]
Sergey Ch
Member

Откуда: Благовещенск
Сообщений: 8873
Sergey Molchanov
... Неужели это неизлечимо? Или я упустил какой-то ньюанс?

Всегда использовал MS VFP Ole DB provider - никогда с подобными ограничениями не сталкивался... Может есть смысл попробовать?
17 май 06, 09:32    [2672348]     Ответить | Цитировать Сообщить модератору
 Re: System resource exceeded  [new]
Sergey Molchanov
Member

Откуда:
Сообщений: 83
Да, проблем нет. Я фокспрошные драйвера в самом начале исключил из рассмотрения, так как они не входят в состав операционки и последнего MDACа, их надо ставить отдельно :( Поэтому я и уперся рогами в глючные драйвера. Простите меня за излишнюю капризность...
Но в целях спортивного интереса я только что вернулся к фокспрошным драйверам.
Поставил цикл на 10000 оборотов и испробовал следующие драйвера:
{Microsoft FoxPro VFP Driver (*.dbf)}
{Microsoft dBase VFP Driver (*.dbf)}
{Microsoft Visual FoxPro Driver}
Потом залез в реестр и увидел, что эти три драйвера - на самом деле один и тот же драйвер, имеющий несколько синонимов :)
Все супер - память не жрет, работает - ну на порядок быстрее, даже нечего сравнивать.
Кстати, прикол: драйвер с именем {Microsoft Visual FoxPro Driver} якобы существует в операционке с самого начала ее установки, но на самом деле там стоит заглушка, которая при попытке поюзать драйвер посылает на... (нет, не туда :) ) сайт майкрософта с просьбой выкачать полноценный драйвер. Ужос...
Итог: вот сейчас сижу и думаю, что делать:
1. Таки ждать чуда, и вдруг найдется методика работы с глючными драйверами, обходящая их глючность.
2. Перестать упираться рогами (вообще спилить их), перейти на фокспрошные драйвера и не париться. Но при этом зарубить себе на носу, что со своей программой драйвера нужно доставлять.
3. Плюнуть на все и написать класс, читающий DBF как двоичный файл и сам разбирающий его содержимое (благо, функциональность SQL не нужна, единственная потребность - прочитать весь файл и перегнать его в Oracle). И пошло все... гулять :)
17 май 06, 11:48    [2673242]     Ответить | Цитировать Сообщить модератору
 Re: System resource exceeded  [new]
winsky!
Member

Откуда: Киев
Сообщений: 5120
угу. третий вариант впечатляет (сравните к-во кода для 3 и 2 вариантов)
я бы выбрал второй, насчет рогов
17 май 06, 14:30    [2674451]     Ответить | Цитировать Сообщить модератору
 Re: System resource exceeded  [new]
Sergey Molchanov
Member

Откуда:
Сообщений: 83
Та ладно, не так уж и много кода получилось :)
Это нормальные люди выбрали бы второй путь, а я как извращенец все-таки решил пойти по третьему. Вроде ничего так вышло... Теперь я свободен, как птица в полете, а все драйвера пусть товарисч Гейтс засунет себе ...(цензура) :)
17 май 06, 15:40    [2674955]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить