Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Помогите! ODBCRecordSet вылетает при многочисленном использовании INSERT (число прочтений - 1299 )
Firedragon
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 13
Зарегистрирован: 30. Декабря 2010
Помогите! ODBCRecordSet вылетает при многочисленном использовании INSERT
30. Декабря 2010 :: 05:35
Печать  
Привожу простой пример:
[code]Процедура Сформировать()
     ЗапросОДБЦ = СоздатьОбъект("ODBCRecordSet");
     ТекстЗапроса =
     "IF OBJECT_ID(N'tempdb..#abc', N'U') IS NOT NULL
     |drop table #abc
     |
     |create table #abc ([a] varchar(1))
     |
     |while 1=1
     |insert #abc Values ('t')";
     
     ЗапросОДБЦ.Выполнить(ТекстЗапроса);
     ТекстЗапроса =
     "SELECT
     |      *
     |FROM
     |      #abc
     |
     |DROP TABLE #abc;";
     ТЗ = ЗапросОДБЦ.ВыполнитьИнструкцию(ТекстЗапроса);
     ТЗ.ВыбратьСтроку();
КонецПроцедуры
[/code]
По идее обработка должна зависнуть, но нет - она вылетает, при чем рэндомно!!! Точнее не обработка а запрос с бесконечным циклом. Т.Е. он не уходит в бесконечность (хотя должен). И все это из-за многочисленных INSERT-ов (проверено!). Что самое обидное - метод Выполнить() возвращает 0 и метод ПолучитьОписаниеОшибки() из-за этого возвращает пустое значение. Поэтому отследить что-то практически не возможно. В логах SQL Server ничего полезного. И кстати в SQL Server-е запрос с бесконечным циклом работает нормально, т.е. уходит в бесконечность, как и положено))). Гуру-папки и гуру-мамки, умоляю, помогите разобраться в чем причина и как это обойти. Я уже все испробовал. Все что знал.

З.Ы.  Мне конечно бесконечный цикл не нужен, это я для наглядного примера привел. Мой цикл гораздо меньше бесконечности ;), но INSERT-ов там тоже довольно много, по крайней мере достаточно, чтоб заставить ODBCRecordSet вылететь.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите! ODBCRecordSet вылетает при многочисленном использовании INSERT
Ответ #1 - 30. Декабря 2010 :: 06:13
Печать  
set nocount on
  

1&&2&&3
Наверх
 
IP записан
 
Firedragon
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 13
Зарегистрирован: 30. Декабря 2010
Re: Помогите! ODBCRecordSet вылетает при многочисленном использовании INSERT
Ответ #2 - 30. Декабря 2010 :: 06:18
Печать  
Пасибки, помогло, цикл завис (не думал что буду этому радоваться)))) ) Улыбка
  
Наверх
 
IP записан
 
Leierkastenmann
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 114
Зарегистрирован: 30. Марта 2007
Re: Помогите! ODBCRecordSet вылетает при многочисленном использовании INSERT
Ответ #3 - 30. Декабря 2010 :: 06:24
Печать  
Да нормально все уходит в бесконечный цикл  Улыбка По крайней мере у меня уходит. И большое кол-во инсертов тоже нормально отрабатывает, без всяких выпаданий. А точно именно такой запрос?
  
Наверх
 
IP записан
 
Firedragon
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 13
Зарегистрирован: 30. Декабря 2010
Re: Помогите! ODBCRecordSet вылетает при многочисленном использовании INSERT
Ответ #4 - 30. Декабря 2010 :: 06:39
Печать  
Leierkastenmann писал(а) 30. Декабря 2010 :: 06:24:
Да нормально все уходит в бесконечный цикл  Улыбка По крайней мере у меня уходит. И большое кол-во инсертов тоже нормально отрабатывает, без всяких выпаданий. А точно именно такой запрос?


Да, именно он. Мож у тя nocount по умолчанию on? Я не очень силен в скуле, ток 4-й месяц работаю))
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать