Поставщик OLE DB для Jet
Поставщик OLE DB для Jet (Майкрософт) предоставляет интерфейс OLE DB для баз данных Microsoft Access и позволяет распределенным запросам в SQL Server 2005 и более поздних версиях обращаться к базам данных Access и электронным таблицам Excel.
Загрузить драйверы Microsoft Office 2007 можно на странице системного драйвера Office 2007. Компоненты подключения к данным.
Совет |
---|
Для подключения к Microsoft Access SQL Server должен запустить компонент Microsoft Access Database Engine. В отличие от других поставщиков, Microsoft Access не является облегченным поставщиком, он представляет собой весь компонент Microsoft Access Database Engine. Открытие Microsoft Access в пространстве процесса SQL Server может привести к отказам из-за недостатка ресурсов диска, процессора или памяти. Будет выдано сообщение об ошибке «Не удалось инициализировать объект источника данных поставщика OLE DB». Чтобы избежать ошибок из-за нехватки памяти, настройте поставщик для открытия вне пространства процесса в памяти SQL Server. |
Запуск Microsoft Access вне пространства памяти SQL Server
В обозревателе объектов среды Среда SQL Server Management Studio разверните имя SQL Server, разверните Объекты сервера, Связанные серверы и Поставщики, щелкните правой кнопкой мыши поставщик Microsoft Access Microsoft.ACE.OLEDB.12.0 или Microsoft.Jet.OLEDB.4.0, а затем выберите пункт Свойства.
В поле Параметры поставщика снимите флажок Допускать в ходе процесса.
Нажмите кнопку ОК.
Создание связанного сервера для доступа к базе данных Access
Выполните процедуру sp_addlinkedserver для создания связанного сервера, указав Microsoft.Jet.OLEDB.4.0 в качестве параметра provider_name, а полное имя пути к MDB-файлу базы данных Access — в качестве параметра data_source. MDB-файл базы данных должен находиться на сервере. Аргумент data_source определяется на сервере, а не на клиенте, и путь должен быть допустимым на сервере.
Например, чтобы создать связанный сервер Nwind, который работает с базой данных Access Nwind.mdb, расположенной в папке c:\mydata directory, выполните:
sp_addlinkedserver 'Nwind', 'Access', 'Microsoft.Jet.OLEDB.4.0', 'c:\mydata\Nwind.mdb'
Чтобы получить доступ к незащищенной базе данных Access, имя входа SQL Server, которое пытается получить доступ к базе данных Access, должно быть сопоставлено с именем входа, соответствующим имени пользователя Admin без пароля.
Следующий пример разрешает доступ локальному пользователю Joe к связанному серверу Nwind.
sp_addlinkedsrvlogin 'Nwind', false, 'Joe', 'Admin', NULL
Чтобы получить доступ к защищенной базе данных Access, настройте реестр с помощью редактора реестра для использования корректного файла сведений о рабочей группе, которой пользуется СУБД Access. Используйте редактор реестра для добавления полного пути и имени файла сведений о рабочей группе, которой пользуется СУБД Access в следующем разделе реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\SystemDB
После того как настроена запись реестра, используйте процедуру sp_addlinkedsrvlogin, чтобы создать сопоставление локального имени входа и имени входа СУБД Access:
sp_addlinkedsrvlogin 'Nwind', false, 'Joe', 'AccessUser', '034fhd99dl'
Примечание по безопасности |
---|
В этом примере проверка подлинности Windows не применяется. Пароли передаются в незашифрованном виде. Пароли могут быть видны в определениях источника данных и сценариях, сохраненных на диске и в составе резервных копий, а также в файлах журналов. Никогда не используйте для таких соединений пароль администратора. За инструкциями по безопасности среды обратитесь к сетевому администратору. |
Базы данных Access не имеют имен каталога и схемы. Поэтому на таблицы в связанном сервере на основе СУБД Access можно ссылаться в распределенных запросах с помощью четырехкомпонентного имени в формате linked_server**...**table_name.
Следующий пример извлекает все строки из таблицы Employees на связанном сервере Nwind.
SELECT *
FROM Nwind...Employees
Создание связанного сервера для электронной таблицы Excel
Поставщик OLE DB для Jet 4.0 (Microsoft) может быть использован для доступа к электронным таблицам Microsoft Excel.
Чтобы создать связанный сервер, который обращается к электронной таблице Excel, используйте формат следующего примера:
EXEC sp_addlinkedserver EXCEL, 'Jet 4.0', 'Microsoft.Jet.OLEDB.4.0', 'c:\data\MySheet.xls', NULL, 'Excel 5.0;' GO
Для доступа к данным в электронной таблице Excel требуется указать имя для диапазона ячеек. К именованному диапазону можно обратиться, используя имя диапазона как имя таблицы. Следующий запрос может использоваться для обращения к именованному диапазону SalesData, используя связанный сервер, установленный в предыдущем примере.
SELECT * FROM EXCEL...SalesData GO
При вставке строки в именованный диапазон ячеек строка будет добавлена после последней строки, которая является частью именованного диапазона ячеек. Поэтому, если необходимо вставить строку rA после заголовка столбца, свяжите ячейки заголовка столбца с именем и используйте это имя в качестве имени таблицы. Диапазон ячеек будет автоматически увеличиваться по мере вставки строк.
Настройка связанного сервера для файла с форматированным текстом
Поставщик OLE DB для Jet (Microsoft) может использоваться для доступа к текстовым файлам и запросов из них.
Для создания связанного сервера для обращения к текстовым файлам напрямую, не связывая файлы как таблицы в MDB-файле СУБД Access, выполните процедуру sp_addlinkedserver, как показано в следующем примере.
Поставщик Microsoft.Jet.OLEDB.4.0 и строка поставщика 'Text'. Источник данных — полное имя пути каталога, который содержит текстовые файлы. Файл Schema.ini должен присутствовать в том же самом каталоге, где и текстовые файлы. Файл Schema.ini описывает структуру текстового файла. Дополнительные сведения о том, как создать файл Schema.ini, см. в документации по ядру СУБД Jet.
--Create a linked server. EXEC sp_addlinkedserver txtsrv, 'Jet 4.0', 'Microsoft.Jet.OLEDB.4.0', 'c:\data\distqry', NULL, 'Text' GO --Set up login mappings. EXEC sp_addlinkedsrvlogin txtsrv, FALSE, NULL, Admin, NULL GO --List the tables in the linked server. EXEC sp_tables_ex txtsrv GO --Query one of the tables: file1#txt --by using a four-part name. SELECT * FROM txtsrv...[file1#txt]
См. также