使用连接到远程 SQL 服务器的远程 MS Access 数据库

使用连接到远程 SQL 服务器的远程 MS Access 数据库

我们有一个 Microsoft Access 数据库 + 应用程序(在服务器 A 上),它使用系统 DSN ODBC 连接(在服务器 A 上)连接到远程 SQL 服务器(服务器 B)到 SQL 数据库服务器。

用户可以远程打开此 Access 数据库,因为它位于服务器 A 上的共享位置。他们仍然必须在其计算机上创建本地 ODBC 连接才能连接到服务器 B。

有没有办法让他们访问 Access 数据库并不是必须创建本地 ODBC 连接吗?

提前致谢

答案1

通过在 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

结束函数

答案2

定义与 SQL Server 的链接时,不要使用 DSN。而是指定实际的连接字符串(应该是一个选项,但我已经多年没有使用过 Access 了)。

相关内容