让 Microsoft Access 使用 TCP/IP 而不是命名管道

让 Microsoft Access 使用 TCP/IP 而不是命名管道

我有一个 Microsoft Access 数据库,它不断尝试使用命名管道联系相应的 Microsoft SQL Server,尽管只有 TCP/IP 可用,并且 ODBC 配置为使用 TCP/IP。无法使用正常工作的 ODBC 再次链接所有表。

我怎样才能解决这个问题?

答案1

就我而言,samsmith 的示例不起作用。

但是,我使用如下方法修复了这个问题:

    Dim DB As DAO.Database
    Set DB = CurrentDb
    Dim Tdf As TableDef

    'Loops through list of tables
    For Each Tdf In DB.TableDefs
        If Tdf.SourceTableName <> "" Then
          'this checks if it actually is a odbc table as i do not want to change the connection string of local tables obviously
          If Not InStr(Tdf.Connect, "ODBC") = 0 And Not (Tdf.Attributes And
dbAttachedODBC) = 0 Then
              Tdf.Connect = "ODBC;DSN=xxx;APP=MicrosoftR Access;WSID=A2200;DATABASE=xxx;Network=DBMSSOCN;TABLE=dbo." & Tdf.Name
              Tdf.RefreshLink 'Saves the changes made
          End If
        End If
    Next
Debug.Print "Finished!"

Network=DBMSSOCN是关键部分,它指定应该使用 tcp。

答案2

使用 SQL 客户端配置应用程序(旧版 SQL 上的“客户端网络实用程序”),设置使用 tcpip 连接到服务器的命名服务(又名“别名”)。将 Access 应用程序设置为使用您创建的命名服务/别名。

在较新版本的 SQL 中,此操作是通过“SQL Server 配置管理器”工具的“SQL Native Client 配置”区域中的“SQL Server 配置管理器”工具完成的,您可以在其中创建别名。

另一种适用于 ADO 和 ODBC 的方法:在连接字符串中指定服务器和端口。在 SQL 中,使用逗号即可完成此操作:

<sql server name or ip>,<port>

例如

mysqlserver2008instance,1433

相关内容