Как создать учетную запись с доступом только для чтения к базе данных Sage ERP для использования с pyodbc

Я относительно новый пользователь StackOverflow, поэтому приношу свои извинения, если нарушил какие-либо правила в своем сообщении.

Вот небольшой фон, чтобы установить контекст для моего вопроса. Я работаю аналитиком по качеству в производственной компании, которая хранит всю необходимую информацию о продуктах, заказах на покупку, информации об отказе и т. д. в базе данных, управляемой с помощью Sage ERP X3 V6.5.

Я хотел бы создать приложение, которое позволит нам анализировать информацию об отказе более мощным способом, чем это доступно в настоящее время. В настоящее время мы вынуждены устанавливать соединения с базой данных через программное обеспечение Sage ERP. Мне гораздо удобнее работать с Python, и я считаю, что это более мощный способ изучения этого набора данных.

Я не очень опытен в работе с базами данных, поэтому я попросил вышестоящих настроить пользователя с доступом только для чтения к нашей базе данных через соединение ODBC. Он был довольно расплывчатым в своих рассуждениях, но он, кажется, думает, что на самом деле это невозможно сделать.

Это приводит меня к моему вопросу: возможно ли создать пользователя (через Sage ERP или какую-либо другую среду), который имеет общий доступ только для чтения ко всем нашим базам данных? Я уверен, вы понимаете, что я не очень хорошо знаком с терминологией для подобных вопросов, поэтому я рад расширить свой пост или ответить на любые вопросы людей, которые отвечают в меру своих возможностей.


person Campbell Dickson    schedule 14.05.2018    source источник
comment
Какие данные вы используете? И нужно ли создавать пользователя в базе данных или какой-либо другой среде аутентификации, такой как LDAP или что-то еще?   -  person    schedule 14.05.2018


Ответы (1)


Только что видел это. Приносим свои извинения за задержку на 9 месяцев. Возможно, вы уже поняли это или нашли способ обойти это, но вот это для следующего человека, у которого есть тот же вопрос:

Да, это не только возможно, но и довольно просто. Это простое подключение ODBC к SOTAMAS90 DSN. Вот ваша строка подключения:

"DSN=SOTAMAS90; UID=myUserId; PWD=мой пароль, компания=XXX"

Просто убедитесь, что у myUserId есть правильные разрешения (вы настраиваете это в обслуживании пользователя/роли в модуле Library Master). Затем используйте обычные методы ODBC для чтения данных. Это автоматически база данных только для чтения.

Обратите внимание, что по умолчанию при установке Sage 100 устанавливается только 32-разрядный драйвер ODBC. 64-разрядную версию можно найти в каталоге WKSetup в папке установки Sage.

Кроме того, к сожалению, это немного на медленной стороне. Поскольку Sage 100 использует собственный механизм хранения данных на основе файлов, а не реляционную базу данных для хранения своих данных, он фактически не имеет доступа к некластеризованным индексам. Это делает каждое предложение WHERE в основном полным сканированием таблицы. Что я делал для решения этой проблемы в прошлом, когда производительность была проблемой, так это создавал ночное задание ETL для копирования всех таблиц MAS, которые мне нужны, в СУБД, например SQL Server или MySql, а затем создавал индексы для всех внешние ключи и столбцы, по которым мне нужно искать. Если вам нужны более свежие данные, чем каждые 24 часа, вы можете запрограммировать пользовательские сценарии для таблиц MAS, которые обрабатывают такие события, как запись, удаление и обновление. В этих сценариях вы можете подключиться к вашей базе данных SQL и создать/обновить/удалить необходимую запись.

Конечно, в зависимости от вашей версии Sage и параметров установки может быть более 1000 таблиц, поэтому выбирайте с умом.

Удачи там.

Аарон

person FunkMonkey33    schedule 22.03.2019