Sql-Server-2008

使用連接到遠端 SQL 伺服器的遠端 MS Access 數據庫

  • March 9, 2011

我們有一個 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

結束功能

引用自:https://serverfault.com/questions/244953