Страница 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