我有一个 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