Как создать учетную запись с доступом только для чтения к базе данных Sage ERP для использования с pyodbc - PullRequest
0 голосов
/ 14 мая 2018

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

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

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

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

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

1 Ответ

0 голосов
/ 22 марта 2019

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

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

"DSN = SOTAMAS90; UID = myUserId; PWD = myPassword, Company = XXX"

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

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

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

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

Удачи.

Аарон

...