У меня есть база данных Microsoft Access, которая постоянно пытается связаться с соответствующим Microsoft SQL Server, используя именованные каналы, хотя доступен только TCP / IP, а ODBC настроен на использование TCP / IP. Невозможно снова связать все таблицы с работающим ODBC.
Как я могу это исправить?
В моем случае пример Самсмита не сработал.
Однако я исправил это, используя что-то вроде этого:
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.
Используйте приложение конфигурации клиента SQL («Сетевая утилита клиента» в старых версиях SQL), настройте именованную службу (также известную как «псевдоним»), которая использует tcpip для подключения к серверу. Настройте приложение Access на использование созданной вами именованной службы / псевдонима.
В более поздних версиях SQL это делается с помощью инструмента «Диспетчер конфигурации SQL Server» в области «Конфигурация собственного клиента SQL», где вы можете создать псевдоним.
Другой подход, который работает для ADO, и я считаю, что ODBC: в строке подключения укажите сервер и порт. В языке SQL это делается с помощью запятой:
<sql server name or ip>,<port>
например
mysqlserver2008instance,1433