Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   внешние источники данных (а именно внешняя база SQL) (http://forums.kuban.ru/f1040/vneshnie_istochniki_dannyh_imenno_vneshnyaya_baza_sql-2893380.html)

SIA1987 01.08.2012 20:07

внешние источники данных (а именно внешняя база SQL)
 
8-ка sql-ная, sql-сервер 2008, тамже находится внешняя база sql, к которой обращаюсь. Сейчас провожу тест на производительность системы, т.е. под двумя юзерами выполняю одну и ту же загрузку из внешней базы sql. Определил отдельные таблицы внешней базы во внешних источниках 8-ки, наделал запросов к ним, и вот при одновременном выполнении запросов под двумя юзерами, выскакивает иногда такая ошибка

SQL State: HY000
Native:0
Message:[Microsoft][ODBC SQL Server]Подключение занято до получения результатов для другого hstmt.

Как бы понятно в общих чертах, т.е. совпадает так, что когда один пытается обратится к таблице, воторой ее еще "не отпустил", но как этого избежать? может в самих запросах какая-то настройка есть, или еще где флажок поставить?
если кто-то сталкивался с подобными ошибками именно в 8-ке во внешних источниках данных, прошу мимо не проходить))

Billi 01.08.2012 20:10

0-SIA1987 >Строку подключения покажи.

SIA1987 01.08.2012 21:54

DRIVER={SQL Server**;SERVER=main_server;DATABASE=main_base

economist 02.08.2012 07:41

А если указать таймаут в настройках драйвера ODBC (или прямо в строке подключения)? Дело в том что по стандарту ODBC - ошибка возникнет только после истечения таймаута, а по умолчанию он нулевой. На моей практике, если запрос выполняется 10 секунд - достаточно 5 сек таймаута, чтобы частота возникновения ошибки при трех юзерах уменьшилась в 100 раз.

SIA1987 02.08.2012 08:26

3 - а разве нельзя в тех же настройках подключения выбрать такой тип блокировок, чтобы не блокировались таблицы при чтении, а увеличение таймаута, ну это крайний вариант, и то который я не знаю как сделать

economist 02.08.2012 09:56

SIA1987 - можно, но это зависит от ODBC драйвера и самой СУБД. Я работаю с SQLite - при записи блокируется ВСЯ база, при чтении - блокируется пятый и последующие потоки, плюс есть еще и файловые блокировки со стороны ОС - вот и остается только таймаут.

Пан. управления - Адм-е - Ист данн ODBC - выбрать драйвер - открыть диалог настроек - поле Timeout - ввести значение.

SIA1987 02.08.2012 11:36

а пример заполнения параметров драйвера можно?

SIA1987 02.08.2012 14:32

5 - и где это вообще настраивать нужно, на сервере где внешняя база sql лежит к которой идут запросы?

SIA1987 03.08.2012 15:17

извините за назойливость, но проблема так и осталось нерешенной, вообще меня больше интересует идея, которую попытался развить Billi, есть же наверное параметр в адресной строке, которые не блокирует таблицы при чтении

Uho 03.08.2012 15:22

а запрос то покажешь может?

SIA1987 03.08.2012 15:45

ну к примеру самый маленький из них выбрал, запросы сформированы конструктором запросов

ВЫБРАТЬ
| dbo_orders.Ссылка,
| dbo_orders.name,
| dbo_orders.idorder,
| dbo_orders.idcustomer.idcustomer КАК idcustomer,
| dbo_addclassification.name КАК name1,
| dbo_customer.addnum
|ИЗ
| ВнешнийИсточникДанных.ecad_okon.Таблица.dbo_orders КАК dbo_orders
| ЛЕВОЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.ecad_okon.Таблица.dbo_customer КАК dbo_customer
| ЛЕВОЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.ecad_okon.Таблица.dbo_addclassification КАК dbo_addclassification
| ПО dbo_customer.idaddclassification1 = dbo_addclassification.Ссылка
| ПО dbo_orders.idcustomer = dbo_customer.Ссылка
|ГДЕ
| dbo_orders.name = &name"

Billi 03.08.2012 17:55

2-SIA1987 >Для начала попробуй работать со скулем через его собственного клиента: Driver={SQL Server Native Client 10.0**;

SIA1987 03.08.2012 21:19

тоже самое, только ругается на другой драйвер))
Ошибка ODBC. SQLSTATE: HY000
Номер ошибки: 0
Описание: [Microsoft][SQL Server Native Client 10.0]Connection is busy with results for another command

SIA1987 03.08.2012 21:23

строка подключения вот такая:
DRIVER={SQL Server Native Client 10.0**;dsn=ecad_okon;SERVER=server-poz;database=ecad_okon
вроде бы добавил пользовательский dsn там по умолчанию стояло long query time 30000 млс, добавлял пользовательский dsn на машине, где стоит база ecad_okon, к которой формирую запросы


Текущее время: 17:00. Часовой пояс GMT +3.