Поделиться через


Поставщик 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

  1. В обозревателе объектов среды Среда SQL Server Management Studio разверните имя SQL Server, разверните Объекты сервера, Связанные серверы и Поставщики, щелкните правой кнопкой мыши поставщик Microsoft Access Microsoft.ACE.OLEDB.12.0 или Microsoft.Jet.OLEDB.4.0, а затем выберите пункт Свойства.

  2. В поле Параметры поставщика снимите флажок Допускать в ходе процесса.

  3. Нажмите кнопку ОК.

Создание связанного сервера для доступа к базе данных Access

  1. Выполните процедуру 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'
    
  2. Чтобы получить доступ к незащищенной базе данных 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

  3. После того как настроена запись реестра, используйте процедуру 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]