SQL-сервер, связанный с базой данных Access

Я пытаюсь создать связанный сервер в SQL (SQL 2016) с базой данных доступа (2013). Я не хочу ничего делать в доступе - просто запросить таблицу из управления SQL Studio. Я пытался создать соединение ODBC, но у меня есть только вариант 32-битного, а не 64-битного. Но если я создам 32-битный (драйвер Microsoft Access (*.mdb)), а затем создам связанный сервер с помощью поставщика Microsoft OLE DB для драйвера ODBC - Источник данных Я использую системное имя DSN. Я получаю это сообщение:

Связанный сервер был создан, но не прошел тест подключения. Вы хотите сохранить связанный сервер?

====================================

Возникло исключение при выполнении инструкции или пакета Transact-SQL. (Майкрософт.SqlServer.ConnectionInfo)


Расположение программы:

в Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery (строка sqlCommand, тип исполнения ExecutionTypes, логическое повторение) в Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery (строка cmd, логическое повторение) в Microsoft.SqlServer.Management.Smo.LinkedServer.TestConnection() в Microsoft.SqlServer.Management.SqlManagerUI.LinkedServerProperties.DoPreProcessExecution (RunType runType, ExecutionMode и результат выполнения)

У меня есть несколько других связанных серверов, но с Oracle DB. Я что-то пропустил?

Посмотрите, поможет ли этот ответ.

Gord Thompson 15.12.2020 00:44

Отвечает ли это на ваш вопрос? SQL Server 2012 запрашивает данные Access 2007, используя ошибку OPENROWSET

June7 15.12.2020 00:45
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
2
1 141
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что ж, если ваш SQL-сервер работает как 64-разрядная версия, вам необходимо установить и использовать 64-разрядную копию механизма доступа к данным (ACE).

Вы не можете использовать MS-access x32 с 64-разрядной версией SQL-сервера.

В то время как клиент x32 или x64 может легко подключиться к SQL-серверу? Это работает, потому что это соединение через сокет.

Но с доступом это НЕ соединение сокета ОТ сервера sql к механизму данных ACE. Нет никакой «службы», к которой вы подключаетесь. Итак, это внутрипроцессная внешняя .dll, которая потребляется и используется непосредственно SQL-сервером для ОТКРЫТИЯ файла accDB.

Следовательно, битовый размер этого процесса, который использует механизм данных ACE, ДОЛЖЕН совпадать. Вы можете установить 64-разрядный движок данных ACE на этот сервер, и тогда это заработает. Но SQL-сервер x64 не может использовать внешние x32-разрядные dll любого типа, включая механизм данных ACE.

Другие вопросы по теме