Я пытаюсь создать связанный сервер в 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. Я что-то пропустил?
Отвечает ли это на ваш вопрос? SQL Server 2012 запрашивает данные Access 2007, используя ошибку OPENROWSET
Что ж, если ваш 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.
Посмотрите, поможет ли этот ответ.