Sql MS Access和远程Informix db之间的只读链接

Sql MS Access和远程Informix db之间的只读链接,sql,database,vba,ms-access,informix,Sql,Database,Vba,Ms Access,Informix,我正在尝试在MS Access和远程Informix db之间创建链接。 Access db将用于使用链接的Informix db中的数据生成报告/视图等 我已经为Informix DB设置了一个DSN,并且可以连接到它。 使用MS Access 2016 GUI,我可以选择通过外部数据选项卡创建链接。但是,我需要确保这是一个只读链接。在链接访问数据库中所做的任何更改(无论是有意更改还是意外更改)都不得过滤掉 我考虑过的一个选项是联系Informix DBA以确保我的帐户是只读的。不幸的是,这是

我正在尝试在MS Access和远程Informix db之间创建链接。 Access db将用于使用链接的Informix db中的数据生成报告/视图等

我已经为Informix DB设置了一个DSN,并且可以连接到它。 使用MS Access 2016 GUI,我可以选择通过外部数据选项卡创建链接。但是,我需要确保这是一个只读链接。在链接访问数据库中所做的任何更改(无论是有意更改还是意外更改)都不得过滤掉


我考虑过的一个选项是联系Informix DBA以确保我的帐户是只读的。不幸的是,这是不可能的,所以我想知道是否还有其他方法可以采用?

要创建只读连接,您可以做一些事情

通常,最安全的方法是创建一个仅具有读取权限的用户,并将该用户用于您的DSN(还修复了DSN信息在access中公开可用且可能被重用的问题)


另一种方法是将
SQL\u访问模式
设置为
1
(=
SQL\u模式
)在您的DSN文件中,它在受支持的数据库上创建只读连接。但是,精通技术的用户只需更改该值,因此这不会增加第一种方式提供的安全性。

Informix ODBC不支持SQL\u ACCESS\u模式,据我所知,没有任何选项可以建立“只读”连接

您可以要求我们的DBA在表上创建一个视图,并仅限制对该视图的访问(例如,仅对其具有“选择”权限)。然后将该视图用作链接表的源


第二种选择是不使用链接表,只从源文件导入数据。

最安全的解决方案是Informix DBA为您的Access前端创建一个新用户,只为您的应用程序将要查询的表授予选择权限。

它的可能副本确实支持
SQL\u Access\u模式
根据CLI中的说明,因此ODBC连接也应该支持它(据我所知,文档充其量只是边缘文档)。@J_S-另一个选项是传递查询,它不
SELECT*FROM TableName
,因为传递查询返回的记录集总是“不可更新”.Informix ODBC不支持SQL\u访问\u模式。驱动程序中没有用于限制或使连接为只读的代码。请注意,
SQL\u访问\u模式
是“ODBC驱动程序的指示器”,即提示,并且“在只读连接期间,当要求驱动程序和数据源处理非只读SQL语句时,驱动程序和数据源的行为由实现定义。"FWIW,我刚刚使用SQL Server的ODBC驱动程序11对链接表进行了
SQL\u ACCESS\u MODE=1
ApplicationContent=READONLY
测试,没有一个阻止我通过ACCESS中的链接表更新SQL Server表。上一个注释TL;DR:
SQL\u ACCESS\u MODE
不一定强制执行只读连接检查。