2017-08-10 56 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權限創建僅用於應用程序查詢的表。