1

我是 StackOverflow 的一个相对较新的用户,所以如果我违反了帖子中的任何规则,我深表歉意。

这里有一些快速背景来为我的问题设置上下文。我在一家制造公司担任质量分析师,该公司将有关产品、采购订单、拒绝信息等的所有相关信息存储在使用 Sage ERP X3 V6.5 管理的数据库中。

我想创建一个应用程序,使我们能够以比目前可用的更强大的方式分析拒绝信息。目前,我们被迫通过 Sage ERP 软件建立数据库连接。我对 Python 感觉更舒服,并且觉得它是探索这个数据集的更强大的方式。

我在使用数据库方面并不是非常有经验,所以我要求上级设置一个通过 ODBC 连接对我们的数据库具有只读访问权限的用户。他的推理相当模糊,但他似乎认为这不可能做到这一点。

这引出了我的问题:是否可以创建一个对我们所有数据库具有一般只读访问权限的用户(通过 Sage ERP 或其他媒介)?我相信你会说,我不知道这样的问题的很多术语,所以我很高兴扩展我的帖子或回答那些尽我所能回答的人的任何问题。

4

1 回答 1

2

刚看到这个。为延迟 9 个月道歉。您可能已经解决了这个问题或找到了解决方法,但这里是为下一个有相同问题的人准备的:

是的,这不仅是可能的,而且非常容易。这是到 SOTAMAS90 DSN 的简单 ODBC 连接。这是您的连接字符串:

“DSN=SOTAMAS90;UID=myUserId;PWD=myPassword,公司=XXX”

只需确保 myUserId 具有正确的权限(您在 Library Master 模块的用户/角色维护中设置)。然后使用常规的 ODBC 方法读取数据。它自动成为只读数据库。

请注意,默认情况下,安装 Sage 100 时仅安装 32 位 ODBC 驱动程序。64 位版本可以在 Sage 安装文件夹的 WKSetup 目录中找到。

此外,不幸的是,它有点慢。由于 Sage 100 使用自己专有的基于文件的数据存储机制而不是关系数据库来存储数据,因此它实际上无法访问非聚集索引。这使得每个 WHERE 子句基本上都是全表扫描。在过去,当性能成为问题时,我为处理此问题所做的工作是创建一个夜间 ETL 作业,将我需要的所有 MAS 表复制到 SQL Server 或 MySql 等 RDBMS 中,然后在所有数据库上创建索引我需要搜索的外键和列。如果您需要比每 24 小时更新一次的数据,您可以针对 MAS 表编写用户定义的脚本,以处理写入、删除和更新等事件。在这些脚本中,您可以连接到 SQL 数据库并创建/更新/删除必要的记录。

当然,根据您的 Sage 版本和安装选项,可能有超过 1,000 个表,因此请明智地选择。

祝你好运。

亚伦

于 2019-03-22T11:30:48.010 回答