Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) connection is busy with results for another hstmt (число прочтений - 11847 )
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
connection is busy with results for another hstmt
17. Августа 2006 :: 11:50
Печать  
Из-за чего вылазит?

Пытаюсь выполнить ТП.ОбновитьСтроки у простейшего запроса...
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: connection is busy with results for another hs
Ответ #1 - 17. Августа 2006 :: 12:04
Печать  
Это сообщение от драйвера ODBC. Попросту говоря,
Цитата:
Default result sets do not support multiple active statements on the same connection. After an SQL statement is executed on a connection, the server does not accept commands (except a request to cancel the rest of the result set) from the client on that connection until all the rows in the result set have been processed.

С ТП не работал, по-этому workarround предолжить не могу. Печаль
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: connection is busy with results for another hs
Ответ #2 - 17. Августа 2006 :: 12:04
Печать  
видимо рекордсет какой-то не закрыт
  

1&&2&&3
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: connection is busy with results for another hs
Ответ #3 - 17. Августа 2006 :: 12:09
Печать  
trad писал(а) 17. Августа 2006 :: 12:04:
видимо рекордсет какой-то не закрыт

Это поставщик данных MSSQL для ТП...

Источник = СоздатьОбъект("ODBCDataProvider.MSSQL");
База = СоздатьОбъект("ODBCDatabase");
Источник.БазаДанных = База;


тут незакрытых рекордсетов быть немогет...
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: connection is busy with results for another hs
Ответ #4 - 17. Августа 2006 :: 12:13
Печать  
Здесь используется подключение 1С. На котором вполне может быть открытый рекордсет.Изменено:
Или второй рекордсет открывается позже..
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: connection is busy with results for another hs
Ответ #5 - 17. Августа 2006 :: 12:14
Печать  
Да, в другом классе, есть открытый рекордсет...

Получается что я не имею возможность использовать поставщика MSSQL если какая-то форма работает с рекордсетом?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: connection is busy with results for another hs
Ответ #6 - 17. Августа 2006 :: 12:16
Печать  
Arta писал(а) 17. Августа 2006 :: 12:14:
Да, в другом классе, есть открытый рекордсет...

Получается что я не имею возможность использовать поставщика MSSQL если какая-то форма работает с рекордсетом?

Можно создать ещё одно подключение (если 1С запущен не монопольно).
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: connection is busy with results for another hs
Ответ #7 - 17. Августа 2006 :: 12:28
Печать  
Брр...
Опишу проблему.

Есть обработка, несколько вкладок, на каждой вкладке ТП, реализованный в виде класса, где поставщиком является MSSQL.
До недавнего времени все было нормально, сегодня вылез такой косяк, причем этот баг никак не отстреливается... Печаль

При переходе от вкладки к вкладке ТП не уничтожаются, запросы продолжают работать, но при этом дополнительно выбираются данные через
DataBase = СоздатьОбъект("ODBCDatabase");
DataBase.Attach1C();
RecordSet = СоздатьОбъект("ODBCRecordSet");
RecordSet.SetDatabase(DataBase);
RecordSet.ВыполнитьИнструкцию(ТекстЗапроса);
Например для отбора каких либо данных...


Собственно вопрос, в каком месте я наступил на грабли и так делать было не надо?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: connection is busy with results for another hs
Ответ #8 - 17. Августа 2006 :: 12:57
Печать  
Если поставщик данных не закрывает рекордсет (я этого не знаю), то грабли в строке
DataBase.Attach1C();
а ODBC ругается в строке
RecordSet.ВыполнитьИнструкцию(ТекстЗапроса);

Попробуй вместо Attach1C метод Соединение:

DataBase.Соединение("DRIVER=SQL Server;SERVER=servername;UID=sa;PWD=xxx;DATABASE=dbname;");
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: connection is busy with results for another hs
Ответ #9 - 17. Августа 2006 :: 13:17
Печать  
Не помогло...

черт побери, впервые так сильно встрял Печаль

А есть возможность со стороны сервера отследить, какой запрос в данный момент он отрабатывает?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: connection is busy with results for another hs
Ответ #10 - 17. Августа 2006 :: 13:20
Печать  
есть подозрения.
ТаймаутОбновления установлен?
если да то попробуй поставить 0 для проверки
  

1&&2&&3
Наверх
 
IP записан
 
tav13
1c++ donor
Отсутствует



Сообщений: 108
Местоположение: Donetsk
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: connection is busy with results for another hs
Ответ #11 - 17. Августа 2006 :: 13:31
Печать  
Arta писал(а) 17. Августа 2006 :: 13:17:
Не помогло...

черт побери, впервые так сильно встрял Печаль

А есть возможность со стороны сервера отследить, какой запрос в данный момент он отрабатывает?

Воспользуйся SQL Profiler
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: connection is busy with results for another hs
Ответ #12 - 17. Августа 2006 :: 13:32
Печать  
Первым делом убрал. Уже сталкивался с такой проблемой, еще на итланде писал, что если запрос громоздкий и тяжелый, то обновление может начаться тогда, когда еще старые результаты не были получены.


В данном случае я использую принудительно ОбновитьСтроки. В первый раз захожу на закладку, создавая ТП, во второй раз просто обновляются строки. И на второй раз вылазит эта ошибка. Подчеркну, что запрос простейший, с одним джойном к номенклатуре. Результат - 5 строк...
Код
Выбрать все
Если ПустоеЗначение(Конт.ТабличноеПолеЗаказы) = 1 Тогда
	Конт.ТабличноеПолеЗаказы = Служебное.СоздатьЭлементУправления(Конт, СоздатьОбъект("ТабличноеПолеЗаказы"), "ТабличноеПолеЗаказы");
	Конт.ТабличноеПолеЗаказы.Инициализация();
	Конт.ТабличноеПолеЗаказы.Вывести(Конт);
КонецЕсли;
Конт.ТабличноеПолеЗаказы.ОбновитьСтроки();
 

  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: connection is busy with results for another hs
Ответ #13 - 17. Августа 2006 :: 14:26
Печать  
Не, хоть застрелите, а такая ошибка у меня вылазила ТОЛЬКО у ТП с поставщиком MSSQL, c тяжелым запросом, и частым периодом обновления...

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


P.S. А типизация этих пяти строк в запросе может быть причиной? Хотя, блин, у меня раз уже все вывелось, я просто пытаюсь ОбновитьСтроки сделать Печаль
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: connection is busy with results for another hs
Ответ #14 - 17. Августа 2006 :: 14:33
Печать  
Не успел пожаловаться, как отловил баг.

Итак, у меня был запрос:

Код
Выбрать все
ТекстЗапроса = "
	|SELECT
	|	Номенклатура.Code AS Код,
	|	Спр.ID AS [ID $Справочник.Требования_заказы],
	|	$Спр.Товар AS [Наименование $Справочник.Номенклатура],
	|	$Номенклатура.Артикул AS Артикул,
	|
	|	CASE
	|		WHEN
	|			$Спр.Заказано = :Да
	|		THEN
	|			'Да'
	|		ELSE
	|			'Нет'
	|	END AS [Заказано $Строка],
	|	$Спр.Затребовал AS [Заказал $Справочник.Пользователи],
	|	$Спр.ЗаказаноДок AS [Заказ $Документ.Заказ]
	|FROM
	|	$Справочник.Требования_заказы AS Спр (NOLOCK)
	|JOIN
	|	$Справочник.Номенклатура AS Номенклатура (NOLOCK)
	|ON
	|	Номенклатура.ID = $Спр.Товар
	|WHERE
	|	$Спр.ДокументОснование = :Док AND
	|	Спр.Ismark != 1
	|";

	Источник.УстановитьТекстовыйПараметр("Док", Док.ТекущийДокумент());
	Источник.УстановитьТекстовыйПараметр("Да", Да);
	Источник.УстТекстЗапроса(ТекстЗапроса);
	Источник.УстКлючПорядка("Наименование");
	Источник.УстИдПоле("Наименование");
	Элемент.ПоставщикДанных = Источник;
 



Изменил УстКлючПорядка на
Код
Выбрать все
Источник.УстКлючПорядка("ID"); 


и все заработало.

Я был прав? Из-за типизации?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать