Sql-Server-2008
使用連接到遠端 SQL 伺服器的遠端 MS Access 數據庫
我們有一個 Microsoft Access 數據庫 + 應用程序(在伺服器 A 上),它使用系統 DSN ODBC 連接(在伺服器 A 上)連接到遠端 SQL 伺服器(伺服器 B)到 SQL 數據庫伺服器。
使用者遠端打開此 Access 數據庫,因為它位於伺服器 A 上的共享位置。他們仍然必須在其電腦上創建本地 ODBC 連接才能連接到伺服器 B。
無論如何他們可以訪問 Access 數據庫而不必創建本地 ODBC 連接?
提前致謝
您可以通過在 Access 數據庫中使用一些程式碼來消除對每台機器上本地 DSN 的需求。您當然仍然需要安裝適當的 ODBC 驅動程序,但我希望您需要的驅動程序可能是 Windows 上的標準驅動程序。
最初創建數據庫需要本地 DSN。
以下是我用於動態重新連結到 MySQL 數據庫的內容,因此您需要相應地對其進行編輯。程式碼從 AutoExec 宏呼叫,或者可以手動執行或從表單執行。
請注意,這不是我的程式碼,但我已經使用了很長時間,並且不記得我最初從哪裡得到它。我所做的只是編輯它以滿足我的要求。
Option Compare Database Public Function ReLinkTables() Dim dbPUBS As DAO.Database Dim tdfPUBS As DAO.TableDef Dim strTable As String Dim strConnect As String Dim InFile As Integer ' Set the following variables tosuit your DB connection Dim Server As String Dim Database As String Dim User As String Dim Password As String On Error GoTo 0 Set dbPUBS = Nothing Set dbPUBS = CurrentDb strConnect = "DRIVER={MySQL ODBC 3.51 Driver};" _ & "SERVER=" & Server & ";" _ & "DATABASE=" & Database & ";" _ & "UID=" & User & ";" _ & "PWD=" & Password & ";" _ & "OPTION=" & 1 + 2 + 8 + 32 + 2048 + 16384 ' Refresh Access linked tables For Each tdfPUBS In dbPUBS.tabledefs ' Only attempt to refresh link on tables that already ' have a connect string (linked tables only) If Len(tdfPUBS.Connect) > 0 Then strTable = tdfPUBS.Name ' Set the tables connection string tdfPUBS.Connect = strConnect ' and refresh the link tdfPUBS.RefreshLink End If Next ' Refresh Connect String for all Pass-Through Queries 'strMsg = "Refreshing links for all Pass Through Queries." 'DoCmd.Echo True, strMsg 'For Each qdfPUBS In dbPUBS.QueryDefs 'If Len(tdfPUBS.Connect) > 0 Then 'qdfPUBS.Connect = strConnect 'End If 'Next
結束功能