如何从MDB到SQL Server创建链接表

时间:2012-03-10 12:24:04

标签: sql-server ms-access linked-tables

我的应用程序在通过无线网络访问MDB数据库时遇到问题。

快速解决方案是在所有将其所有表链接到SQL Server数据库的工作站上都​​有一个本地MDB文件吗?

这是否可以避免在应用程序中重写所有数据访问代码?

1 个答案:

答案 0 :(得分:1)

是的,这样做会很好。我们有很多客户以这种方式联系 然而,这不是一件容易的事。不确定所需的所有努力是否会为自己付出代价 而且您有一些新的维护和部署问题。

要遵循的步骤如下:

1)将表迁移到SQLServer
2)创建将用于连接到后端数据库的ODBC数据源 3)连接你的桌子 4)重命名已连接的表以删除模式限定符(例如" dbo _"),以便链接表具有与以前相同的名称。

现在是测试所有代码的时候了 希望你不必改写任何东西。

真正的问题在于您需要创建与原始数据源匹配的ODBC数据源的客户端PC。此外,如果您重新分发前端数据库,则必须重新连接客户端PC上的所有表。 你需要调用这样的函数:

Public Function UpdateODBCTables() As Boolean

    On Error GoTo Exit_On_Error
    Dim dbs As DAO.Database
    Dim tdf As DAO.TableDef
    Dim sDSN As String
    Dim sDB As String
    Dim sComputer As String
    Dim sDesc As String
    Dim sApp As String
    Dim strConnect As String

    sDSN = "YOUR_DSN_NAME"
    sDB = "YOUR_DATABASE_NAME"
    sComputer = "YOUR_COMPUTER_NAME"
    sApp = "YOUR_APP_NAME"
    sDesc = "DESCRIPTION_OF_YOUR_APP"

    strConnect = "ODBC;DSN=" & sDSN & ";" & _
                 "DATABASE=" & sDB & ";" & _
                 "WSID=" & sComputer & ";" & _
                 "TrustedConnection=Yes;" & _
                 "Description=" & sDesc & ";" & _
                 "APP=" & sApp ";"
    Set dbs = CurrentDb
    ' Loop over tabledefs of ODBC type and reconnect
    For Each tdf In dbs.TableDefs
        If tdf.Connect <> "" And Left(tdf.Connect, 4) = "ODBC" And Left(tdf.Name, 1) <> "~" Then
            tdf.Connect = strConnect
            tdf.RefreshLink
        End If
    Next
    dbs.TableDefs.Refresh
    UpdateODBCTables = True

Exit_On_Return:
   Set dbs = Nothing
   Exit Function

Exit_On_Error:
   MsgBox Err.Description, vbCritical, "YOUR_MESSAGE_TITLE"
   Resume Exit_On_Return
End Function