2017-08-10 61 views
0

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

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

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

+0

[MS Access:SQL Server的只读链接表?](https://stackoverflow.com/q/33694068/2144390)可能存在重复问题 –

回答

0

您可以通过几种方法创建只读连接。

最安全的方式,在一般情况下,是创建一个只具有读取访问权限的用户,并使用该用户为你的DSN(也修复该问题是DSN信息是公开的访问,并可能被重用。

另一种方法是在DSN文件中将SQL_ACCESS_MODE设置为1(= SQL_MODE_READ_ONLY),该文件在支持的数据库上创建只读连接。但是,技术人员只能更改该值,因此不会添加安全第一种方式提供。

+0

请注意[本MSDN文章](https:// msdn。 microsoft.com/en-us/library/ms525699(v=vs.90).aspx)表示'SQL_ACCESS_MODE'是“ODBC驱动程序的指示器”,即提示,并且“驱动程序的行为和当被要求处理在只读连接期间不是只读的SQL语句时,数据源是实现定义的。“ FWIW,我只是使用SQL Server的ODBC驱动程序11测试了'SQL_ACCESS_MODE = 1'和'ApplicationIntent = READONLY'链接表,并且都没有阻止我通过Access中的链接表更新SQL Server表。 –

+0

先前的评论TL; DR:'SQL_ACCESS_MODE'不一定*强制执行*只读连接。 –

1

Informix ODBC不支持SQL_ACCESS_MODE,据我所知,没有选项会使'只读'c onnection。

您可以让我们的DBA在表格上创建一个视图并限制对该视图的访问(例如,只对其具有“SELECT”权限)。然后使用该视图作为链接表的来源。

第二种选择是不具有链接表,只需从源导入数据。

+0

它在CLI中根据[本文档](ftp://ftp.software.ibm.com/software/informixU2/ifmxcli.pdf)支持'SQL_ACCESS_MODE',所以ODBC连接也应该支持它(到目前为止据我所知,该文件是最好的边际)。 –

+0

@J_S - 另一个选项是传递查询,它会执行SELECT * FROM TableName,因为传递查询返回的记录集始终是“不可更新的”。 –

+0

Informix ODBC不支持SQL_ACCESS_MODE。驱动程序中没有代码来限制或使连接只读。 –

0

最安全的解决方案是让Informix DBA为您的Access前端创建一个新用户,并为GRANT SELECT权限创建仅用于应用程序查询的表。