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