Работа с СУБД

Вопросы связанные с работой ГИС Аксиома
Аватара пользователя
grig27
Сообщения: 16
Зарегистрирован: 27 май 2019, 04:53

Работа с СУБД

Сообщение grig27 » 19 июн 2019, 06:04

Добрый день.

Пробуем работать с СУБД.

Oracle почему то нет в диалоге драйверов подключения...

MS SQL - круто, что стили так же задействуются. Это действительно здорово.
Но есть один вопрос. На сколько я понял, слой запрашивается каждый раз при перемещении по карте.
В слое всего 3000 записей. Открываем представление. Связанную таблицу создать не даёт.
Profiler показывает отсутствие запросов к БД, только курсор... Как оптимизировать скорость отрисовки карты при перемещении?
Аватара пользователя
grig27
Сообщения: 16
Зарегистрирован: 27 май 2019, 04:53

Re: Работа с СУБД

Сообщение grig27 » 19 июн 2019, 06:11

Пробую открыть таблицу атрибутов. Ошибка -

Ошибка в функции cursorFromQueryString SQL = select [CADNUM], [PARSELNAME], [ID], [CADNUMDATE], [CADQUARTER_ID], [CADNUMOLD], [ADRELEMENT_ID], [LOCATION], [AREA], [RATEDISCARGE], [CADCOST], [CATEGORIES_ID], [UTILIZATIONS_ID], [TERZONE_ID], [MEAN], [ACTUALUSE], [PARSELSTATUS_ID], [PARSELTYPE_ID], [ORG_ID], [LICTERR_ID], [MOUNTTERR_ID], [FIELD_ID], [KUPOL_ID], [DELO_ID], [SAPR3], [REMARKA], [ARCHIVED], [OPERATORNAME], [MODIFYDATE], [CREATEOPERATORNAME], [CREATEDATE], [MI_STYLE], [BRANCHES_ID], [NUM_VIPISK], [DATE_VIPISK], [VIPISK], [FIRST_REG], [ID_REGION], [ID_DISTR], [ID_CITY], [CADNUM_PR], [CADNUM_CONT_PR], [CADNUMCNT], [ID_POSTGRANIC], [ID_OBREM], [ID_VID_OTVODA], [ID_KW], [KN_PARCEL], [GUID], [GEOM_OBJ], [USN], [LOCAL_SCHEMA], [MI_PRINX]
from [GEO].[OBJ_PAR]
Ошибка SQL:[Microsoft][SQL Server Native Client 11.0][SQL Server]Оператор SQL выполняется напрямую; без курсора. [Microsoft][SQL Server Native Client 11.0][SQL Server]Неправильный синтаксис около ключевого слова "from".
Аватара пользователя
Артём
Сообщения: 12
Зарегистрирован: 07 июн 2019, 11:48

Re: Работа с СУБД

Сообщение Артём » 19 июн 2019, 12:28

По поводу подключения Oracle: в системе обязательно должен быть установлен Oracle Native Client (64 для 64-битной Аксиомы, 32 для 32-битной Аксиомы). Сейчас сделано так, что, если Аксиома не находит в системе Oracle Native Client, она не отображает Oracle в списке подключений.

Насчёт связанных таблиц: флажок "Создать связанную таблицу" становится доступным только если включена опция "Создавать TAB-файл при открытии" (в разделе Основные -> Параметры -> Системные). Этот момент не отражён в документации, но там есть такая взаимосвязь.

Что касается ошибки MS SQL Server при выполнении запроса, то это, наверное, где-то в Аксиоме ошибка в парсере имени таблицы. Там в тексте запроса после FROM должно быть "dbo.", по всей видимости. Но точно не могу сказать, надо смотреть.
Аватара пользователя
Артём
Сообщения: 12
Зарегистрирован: 07 июн 2019, 11:48

Re: Работа с СУБД

Сообщение Артём » 19 июн 2019, 15:13

grig27 писал(а):
19 июн 2019, 06:11
Пробую открыть таблицу атрибутов. Ошибка -

Ошибка в функции cursorFromQueryString SQL = select [CADNUM], [PARSELNAME], [ID], [CADNUMDATE], [CADQUARTER_ID], [CADNUMOLD], [ADRELEMENT_ID], [LOCATION], [AREA], [RATEDISCARGE], [CADCOST], [CATEGORIES_ID], [UTILIZATIONS_ID], [TERZONE_ID], [MEAN], [ACTUALUSE], [PARSELSTATUS_ID], [PARSELTYPE_ID], [ORG_ID], [LICTERR_ID], [MOUNTTERR_ID], [FIELD_ID], [KUPOL_ID], [DELO_ID], [SAPR3], [REMARKA], [ARCHIVED], [OPERATORNAME], [MODIFYDATE], [CREATEOPERATORNAME], [CREATEDATE], [MI_STYLE], [BRANCHES_ID], [NUM_VIPISK], [DATE_VIPISK], [VIPISK], [FIRST_REG], [ID_REGION], [ID_DISTR], [ID_CITY], [CADNUM_PR], [CADNUM_CONT_PR], [CADNUMCNT], [ID_POSTGRANIC], [ID_OBREM], [ID_VID_OTVODA], [ID_KW], [KN_PARCEL], [GUID], [GEOM_OBJ], [USN], [LOCAL_SCHEMA], [MI_PRINX]
from [GEO].[OBJ_PAR]
Ошибка SQL:[Microsoft][SQL Server Native Client 11.0][SQL Server]Оператор SQL выполняется напрямую; без курсора. [Microsoft][SQL Server Native Client 11.0][SQL Server]Неправильный синтаксис около ключевого слова "from".
Выяснилось, что такая ошибка возникает, если в таблице нет первичного ключа.
Как обходной путь, попробуйте явно задать первичный ключ у таблицы в SQL Server'е.
Аватара пользователя
grig27
Сообщения: 16
Зарегистрирован: 27 май 2019, 04:53

Re: Работа с СУБД

Сообщение grig27 » 20 июн 2019, 05:08

Выяснилось, что такая ошибка возникает, если в таблице нет первичного ключа.
Это вьюха из 2 таблиц. Семантика и графика. У обоих таблиц есть первичный ключ.
Oracle Native Client
Какой конкретно компонент требуется? OSI? Или ещё какой то?
Аватара пользователя
Артём
Сообщения: 12
Зарегистрирован: 07 июн 2019, 11:48

Re: Работа с СУБД

Сообщение Артём » 20 июн 2019, 11:38

grig27 писал(а):
20 июн 2019, 05:08
Выяснилось, что такая ошибка возникает, если в таблице нет первичного ключа.
Это вьюха из 2 таблиц. Семантика и графика. У обоих таблиц есть первичный ключ.
Да, к сожалению, такой вариант сейчас пока не будет работать. Мы в будущем планируем добавить возможность, чтобы пользователь мог явно указать в таком случае, какой столбец является первичным ключом.
Oracle Native Client
Какой конкретно компонент требуется? OSI? Или ещё какой то?
Да, требуется OCI.DLL . Проверьте ещё, что прописано в переменной среды ORACLE_HOME. Инструкция, как настроить поддержку Oracle есть в Руководстве по установке и активации на сайте Аксиомы:

Чтобы установить клиентскую часть:
1. Скачайте с сайта Orcale файлы:
* Instant Client Package – Basic
* Instant Client Package – SDK
2. Распакуйте данные файлы в локальный каталог (например:
c:\instantclient_12_1)
3. Перейдите в полученный каталог (c:\instantclient_12_1), найти файл
OCI.DLL и сделайте его копию в том же каталоге под именем LIBCLNTSH.DLL.
Исходный не удаляйте.

Далее требуется настройка Windows:
1. В Проводнике Windows выберите Компьютер и нажмите правую кнопку мыши.
2. Выберите пункт меню Свойства.
3. В диалоге выберите Дополнительные параметры системы.
4. Далее нажмите кнопку Переменные среды.
5. В открытом диалоге, в разделе Переменные среды пользователя добавьте
переменную окружения ORACLE_HOME.
6. В качестве значения данной переменной задайте путь к каталогу:
ORACLE_HOME=<каталог с Instant Client> (пример: c:\instantclient_12_1).
7. В пункте Системные переменные добавьте этот путь к переменной окружения
%Path% (пример: Path=%Path%;c:\instantclient_12_1).
8. Перегрузите компьютер.
Аватара пользователя
grig27
Сообщения: 16
Зарегистрирован: 27 май 2019, 04:53

Re: Работа с СУБД

Сообщение grig27 » 20 июн 2019, 11:54

Это сделано для совместимости с Linux?
Аватара пользователя
Артём
Сообщения: 12
Зарегистрирован: 07 июн 2019, 11:48

Re: Работа с СУБД

Сообщение Артём » 20 июн 2019, 12:19

Нет, тут дело, скорее, не в Linux, а просто в процессе разработки системы изначально не предусмотрели какие-то вещи.

Все шероховатости в работе с СУБД будем устранять, на замечания пользователей будем реагировать, сообщения об ошибках сделаем более понятными.
Аватара пользователя
grig27
Сообщения: 16
Зарегистрирован: 27 май 2019, 04:53

Re: Работа с СУБД

Сообщение grig27 » 21 июн 2019, 05:08

Клиент мы обычно ставим 11

https://www.oracle.com/technetwork/data ... 98987.html

Из компонентов ставим Oracle Call Interface (OCI), Oracle Net, Oracle Objects for OLE, Oracle Provider for OLE DB.

Путь ora_home ссылается не на папку bin а на корень установки клиента. То есть не уровень выше. Пробовал указывать на BIN результат одинаковый.

Файл переименовал, но пункт в диалоге подключения не появился...
Аватара пользователя
Александр
Сообщения: 93
Зарегистрирован: 18 апр 2019, 08:21

Re: Работа с СУБД

Сообщение Александр » 21 июн 2019, 05:54

У Вас установлена 32-битная версия Аксиомы?
Артём писал(а):
19 июн 2019, 12:28
По поводу подключения Oracle: в системе обязательно должен быть установлен Oracle Native Client (64 для 64-битной Аксиомы, 32 для 32-битной Аксиомы).
Клиент у Вас устанавливается 32-битный.
Тут 64-битный клиент 11.2:
https://www.oracle.com/technetwork/data ... 94461.html
Закрыто