К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

внешние источники данных (а именно внешняя база SQL)

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

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

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



1 - 01.08.2012 - 20:10
0-SIA1987 >Строку подключения покажи.
Гость
2 - 01.08.2012 - 21:54
DRIVER={SQL Server**;SERVER=main_server;DATABASE=main_base
Гость
3 - 02.08.2012 - 07:41
А если указать таймаут в настройках драйвера ODBC (или прямо в строке подключения)? Дело в том что по стандарту ODBC - ошибка возникнет только после истечения таймаута, а по умолчанию он нулевой. На моей практике, если запрос выполняется 10 секунд - достаточно 5 сек таймаута, чтобы частота возникновения ошибки при трех юзерах уменьшилась в 100 раз.
Гость
4 - 02.08.2012 - 08:26
3 - а разве нельзя в тех же настройках подключения выбрать такой тип блокировок, чтобы не блокировались таблицы при чтении, а увеличение таймаута, ну это крайний вариант, и то который я не знаю как сделать
Гость
5 - 02.08.2012 - 09:56
SIA1987 - можно, но это зависит от ODBC драйвера и самой СУБД. Я работаю с SQLite - при записи блокируется ВСЯ база, при чтении - блокируется пятый и последующие потоки, плюс есть еще и файловые блокировки со стороны ОС - вот и остается только таймаут.

Пан. управления - Адм-е - Ист данн ODBC - выбрать драйвер - открыть диалог настроек - поле Timeout - ввести значение.
Гость
6 - 02.08.2012 - 11:36
а пример заполнения параметров драйвера можно?
Гость
7 - 02.08.2012 - 14:32
5 - и где это вообще настраивать нужно, на сервере где внешняя база sql лежит к которой идут запросы?
Гость
8 - 03.08.2012 - 15:17
извините за назойливость, но проблема так и осталось нерешенной, вообще меня больше интересует идея, которую попытался развить Billi, есть же наверное параметр в адресной строке, которые не блокирует таблицы при чтении
Uho
9 - 03.08.2012 - 15:22
а запрос то покажешь может?
Гость
10 - 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_custom er КАК dbo_customer
| ЛЕВОЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.ecad_okon.Таблица.dbo_addcla ssification КАК dbo_addclassification
| ПО dbo_customer.idaddclassification1 = dbo_addclassification.Ссылка
| ПО dbo_orders.idcustomer = dbo_customer.Ссылка
|ГДЕ
| dbo_orders.name = &name"
11 - 03.08.2012 - 17:55
2-SIA1987 >Для начала попробуй работать со скулем через его собственного клиента: Driver={SQL Server Native Client 10.0**;
Гость
12 - 03.08.2012 - 21:19
тоже самое, только ругается на другой драйвер))
Ошибка ODBC. SQLSTATE: HY000
Номер ошибки: 0
Описание: [Microsoft][SQL Server Native Client 10.0]Connection is busy with results for another command
Гость
13 - 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, к которой формирую запросы


К списку вопросов






Copyright ©, Все права защищены