我是StackOverflow的一个相对较新的用户,所以如果我在我的帖子中违反了任何规则,我向您道歉。
这里有一些快速的背景知识来设置我的问题的背景。我是一家制造公司的质量分析师,该公司在使用Sage ERP X3 V6.5管理的数据库中存储有关产品、采购订单、拒收信息等的所有相关信息。
我想创建一个应用程序,将允许我们以一种比目前更强大的方式分析拒绝信息。目前,我们被迫通过Sage ERP软件建立数据库连接。我更喜欢Python,觉得它是探索这个数据集的一种更强大的方式。
我在使用数据库方面没有非常丰富的经验,因此我要求更高级别的用户通过ODBC连接设置对我们数据库的只读访问权限。他的推理相当含糊,但他似乎认为这样做是不可能的。
这就引出了我的问题:是否可以(通过Sage ERP或其他介质)创建一个对我们所有数据库具有一般只读访问权限的用户?我相信你能看出来,对于这样的问题,我知道的术语不多,所以我很乐意扩展我的帖子,或者回答那些尽我所能回答问题的人的任何问题。
发布于 2019-03-22 19:30:48
刚刚看到了这个。对于9个月的延迟,我表示歉意。你可能已经解决了这个问题,或者找到了一个解决方法,但这里是给下一个有同样问题的人的:
是的,这不仅是可能的,而且非常容易。这是到SOTAMAS90 DSN的一个简单的ODBC连接。这是您的连接字符串:
"DSN=SOTAMAS90;UID=myUserId;PWD=myPassword,Company=XXX“
只需确保myUserId拥有正确的权限(您可以在Library Master模块的用户/角色维护中进行设置)。然后使用常规的ODBC方法读取数据。它自动成为一个只读的数据库。
请注意,默认情况下,安装Sage 100时仅安装32位ODBC驱动程序。64位版本可以在Sage安装文件夹的WKSetup目录中找到。
而且,不幸的是,它有点慢。由于Sage 100使用自己专有的基于文件的数据存储机制,而不是关系数据库来存储数据,因此它实际上无法访问非聚集索引。这使得每个WHERE子句基本上都是全表扫描。过去,当性能有问题时,我所做的是创建一个夜间ETL作业,将我需要的所有MAS表复制到关系数据库管理系统(如SQL Server或MySql )中,然后为我需要搜索的所有外键和列创建索引。如果您需要的数据比每24小时更新一次,则可以针对MAS表编写用户定义的脚本,这些表处理写入、删除和更新等事件。在这些脚本中,您可以连接到SQL数据库并创建/更新/删除必要的记录。
当然,根据您的Sage版本和安装选项,可能会有超过1,000个表,因此请明智地选择。
祝你好运。
Aaron
https://stackoverflow.com/questions/50335750
复制相似问题