Страница 1 из 3
Драйвер Sybase SQL Anywhere
Добавлено: 25 Июль 2005, 21:01
lsgsoftware
Платформа с61-9034,АВС.Ранее мне приходилось имет дело c SQL-субд эпизодически(писал апликухи типа просмотра,составления отчетов к готовым базам и сами базы не трогал.Просто цеплялся к базам через ODBC и проблем особо не имел).Теперь жизнь заставила
поюзать SQL более серьезно. За основу взял СУБД Sybase SQL Anywhere по двум причинам: система хорошая(видел несколько очень хороших проектов на этой СУБД) и есть в кларионе для нее драйвер.
Начал с того, что взял старую кларионовскую базу тысяч за 100 записей, импортировал ее описание в словарь, затем заменил драйвер
на SQL Anywhere. Затем снова импортировал ту же кларионовскую базу. Началось все хорошо.Сваял аппликуху, в которой написал
кусочек кода чтения живой кларионвской таблицы, переприсвоения
записей и добавления записей в таблицу SQL. Все получилось!Таблица SQL создалась. На этом эйфория кончилась. Через
стандартный бровз с формой SQL-таблица нормально читается, добавляются новые записи, но изменение и удаление записей не работают(пишет что есть неудачная попытка изменения или удаления записи и предлагает повторить операцию.Слава богу прога не вылетает.) Далее написал кусочек ручного кода, в котором решил проверить работу set next add put delete c выводом errorcode() на экран. Увидел, что set, next , add работают, а put ,delete вылетают
с кодом 80- No driversupported.
Суть вопроса (и ожидание ответов)
-какие из хваленых драйверов-акселераторов клариона действительно являются рабочими.
- тем кто юзал Sybase : что я делал неправильно, можно ли эту СУБД победить на базе клариного драйвера и в каком направлении двигаться.
Кстати версия СУБД самая свежая 9.0.2, скачана с сайта фирмы(бесплатно но со страшно муторной многоэтапной системой регистрации)
Добавлено: 26 Июль 2005, 17:39
Andrew Listiev
Оказался от прямого драйвера ASA уже много лет назад, использую стандартный ODBC. По тестам, реального прироста в скорости от использования прямого драйвера мизерные, порядка 3-6%. За плюс рассматриваю универсальность.
Добавлено: 26 Июль 2005, 19:32
lsgsoftware
А есть ли в кларином драйвере ASA явные косяки? Поюзав этот драйвер поглуже , я получил следующий пока необъяснимый для меня результат. Если таблицу сочинять с нуля через описание в словаре сразу как SQL Anywhere, то бровз + форма работают нормально (т.е. функции добавления, удаления корректировки записей работают четко). Однако если залить таблицу в пакетном
режиме читая кларионовский файл(set,next), присваивая полям
SQL- таблицы нужные значения и делая ADD(sql_table), то после успешного (нет еррор-кодов) завершения пакетного задания, заполненная SQL-таблица через бровз работает только на добавление записей, а попытки изменить или удалить запись отвергаются.Тот же
эффект остается при перезагрузке сервера ASA и подключеня базы заново. Смогу ли уйти от подобных глюков перейдя на ODBC.
Re: Драйвер Sybase SQL Anywhere
Добавлено: 27 Июль 2005, 10:28
Andrew™
Далее написал кусочек ручного кода, в котором решил проверить работу set next add put delete c выводом errorcode() на экран. Увидел, что set, next , add работают, а put ,delete вылетают
с кодом 80- No driversupported.
Суть вопроса (и ожидание ответов)
-какие из хваленых драйверов-акселераторов клариона действительно являются рабочими.
- тем кто юзал Sybase : что я делал неправильно, можно ли эту СУБД победить на базе клариного драйвера и в каком направлении двигаться.
при работе в SQL акселераторами надо придерживаться определённых правил, в данном случае как мне видно если PUT и DELETE не отрабатываются, то скорее всего в словаре у данного файла отсутствует первичный ключ, именно по нему строится WHERE для PUT и DELETE, и ещё, есть трассировка работы драйвера BIN\TRACE.EXE, если её включить то можно увидеть какие SQL команды идут на сервер и почему вылетает ошибка.
Добавлено: 27 Июль 2005, 10:54
Andrew Listiev
Хотелось бы чтобы вы указали версию ASA.
Добавлено: 27 Июль 2005, 20:07
lsgsoftware
Версия ASA самая свежая 9.0.2, скачана с сайта фирмы(бесплатно но со страшно муторной многоэтапной системой регистрации, включая пересылку ключа активации на мой адрес - весит 116Мб ).
Согласен, primary key в таблице я не объявлял(наверное это неправильно, т.к. именно этот ключ однозначно идентифицирует запись в таблице).Но на чистой таблице, созданной клариным Create(не через SQL Central) автоматически при первом обращении к таблице- все работает нормально (ADD, Put, Delete).
У меня пока создается впечатление , что при заливке пустой таблицы
в пакетном режиме с помощью низкоуровневых (и старых) операторов
Клариона Set,Next, Add что то нужное не записывается в системные области DB-базы
Добавлено: 28 Июль 2005, 8:50
Andrew™
lsgsoftware писал(а): У меня пока создается впечатление , что при заливке пустой таблицы
в пакетном режиме с помощью низкоуровневых (и старых) операторов
Клариона Set,Next, Add что то нужное не записывается в системные области DB-базы
Всё таки погляди результат выполнения таких ошибочных Put и Delete
в трассе с помощью программы BIN\TRACE.EXE, многие вопросы снимутся.
Добавлено: 28 Июль 2005, 11:19
Andrew Listiev
Я думал более старые версии, 6 или 5. У них проблемы были, приходилось править шаблоны. Я тоже 9 уже год юзаю. И никаких проблем. А по поводу первичного ключа, так как это писал Андрей, наиважнейшая штуковина. У меня очень простой подход:
- создание таблиц и дизайн в PowerDisigner (только);
- в дикшнори таблица только реад онли
- ОБЯЗАТЕЛЬНО первичный ключ, уникальный
- в дикшнори НИКАКИХ автонамбер ключей, все на стороне сервера
Ежели что еще надумаю, напишу позже.
PS
А трейс лог обязательно посмотри, там очень много полезной информациии
Добавлено: 29 Июль 2005, 17:33
lsgsoftware
Большое спасибо всем за ответы и советы.После добавления
primary key все встало на свои места.Буду юзать дальше.Первое впечатление на тестах: заметного повышения скорости на таблице
порядка 100 000 записей по сравнению классическим кларионовским
DAT.файлом не заметил.
Добавлено: 01 Август 2005, 8:52
Andrew™
lsgsoftware писал(а):Большое спасибо всем за ответы и советы.После добавления
primary key все встало на свои места.Буду юзать дальше.Первое впечатление на тестах: заметного повышения скорости на таблице
порядка 100 000 записей по сравнению классическим кларионовским
а попробуй поскролировать Browse на таких объёмах и сложных не Primary key сортировках, и погляди трассировку таких скроллингов, жаль мне сервер, который будет напрягаться на выполнение таких бесмысленных запросов, а если количество одновременно работающих пользователей будет много, как бы сервак в аут не ушёл.
P.S.
это на тему, ЛЮДИ! не наступайте на грабли, на которые уже другие наступали.
Добавлено: 02 Август 2005, 20:00
Гость
Опять я со своими глупостями. Поюзал АSА на персональном сервере.
В целом все в порядке.Работать можно.Естественно решил поюзать сетевой вариант и сразу облом.Как я понимаю, в сетевом варианте
на рабочей станции должен быть запущен DBclient,а в скачанной с сайта Sybase версии 9.0.2 весом 116Мб похоже клиента нет.На этапе
инсталляциии при выборе конфигурации боксик с галкой для
dbclient стоит.Я попробовал на этапе инсталляции оставить только
клиента и в результатае получил только ссылку на штатный источник
ОДБС, т.е никакой клиент не встал.Что это? Глюк дистрибутива или
в версии 9.0.2 клиент для сетевого варианта запускается как-то по-другому.Хотя даже с персональным сервером система прекрасно видит
ДБ-базу(таблицы) с другого компьтера(сервера), описание которой было импортировано в DCT с сервера штатными средствами клариона.
Добавлено: 03 Август 2005, 10:39
Andrew Listiev
Для работы через ODBC всего лишь требуется:
- dbcon9.dll
- dblgen9.dll (локализация англ. )
- dblgru9.dll (локализация рус. )
- dbodbc9.dll
Обнаруженно опытным путем, который можно применить и при использовании прямого драйвера. Просто подкидывать dll'ки помере необходимости.

Добавлено: 04 Август 2005, 19:43
lsgsoftware
Окончательно запутался в 3 соснах. Как же все таки запустить приложение с клиентской машина для работы с сервером.В доке
про драйвер ASA практически ничего нет. Матчасть вполне работоспособна. ISQL с клиентской машины нормально работает, при
запуске ISQL лишь требуется указать имя ASA-сервера, загруженного на удаленной машине(только имя и ничего более). Однако кларионовской приложение вылетает с сообщением типа сервер не найден. Я чувствую, что что-то надо задать в словаре либо в дополнительной строке для драйвера SQL Anywhere, либо в полях
owner и(или) Full pathname. Кто знает в чем дело, подскажите!!!
Добавлено: 05 Август 2005, 11:39
Andrew Listiev
Первое что приходит в голову - сделай импорт таблицы из сервера в дикшнори и проверь оттуда же как открывается(правая кнопка->browse table). По идее среда сама создаст connection string. Я просто не помню синтаксиса этого connection string для прямого доступа к ASA, так бы подсказал бы конечно

Добавлено: 05 Август 2005, 12:48
softcreator
из клашиного хелпа:
The OWNER attribute for SQLAnywhere Accelerator takes the format:
database,username,password