Поставщик ole db excel

Если данные всегда в пути, Excel похож на главный центральный станция. Представьте, что данные — это поезд, который регулярно посещает Excel, вносит изменения, а затем покидает его. Существует множество способов войти в Excel, при котором данные всех типов будут импортироваться, и список будет постоянно расти. После того как данные уже есть в Excel, вы можете изменить фигуру в нужном виде с помощью Power Query. Для бесперебойной работы данных, как и для всех нас, требуется «уход и подача». Сюда приходят свойства подключения, запроса и данных. Кроме того, данные сют с док-станции Excel во многих случаях: они импортируются из других источников, делятся как отчеты, диаграммы и совые таблицы, а также экспортируются в Power BI и Power Apps.  

Обзор многих данных Excel был в том, чтобы ввести, обработать и вывести данные.

Вот основные вещи, которые можно делать, когда данные находятся на поезде Excel:

  • Импорт    Вы можете импортировать данные из различных внешних источников. Эти источники данных могут быть на вашем компьютере, в облаке или на полпути по всему миру. Дополнительные сведения см. в теме «Импорт данных из внешних источников данных».

  • Power Query    С помощью Power Query (ранее — » Get & Transform») можно создавать запросы для фигуры, преобразования и объединения данных различными способами. Вы можете экспортировать свою работу как шаблон Power Query, чтобы определить операцию потока данных в Power Apps. Вы даже можете создать тип данных в дополнение к связанным типамданных. Дополнительные сведения см. в справке Power Query для Excel.

  • Безопасность    Конфиденциальность данных, учетные данные и проверка подлинности всегда являются проблемой. Дополнительные сведения см. в сведениях об управлении настройками и разрешениями источников данных, а также настройке уровней конфиденциальности.

  • Обновить    Для внесения в Excel изменений, например дополнений, обновлений и удаления, обычно требуется операция обновления. Дополнительные сведения см. в теме «Обновление подключения к внешним данным в Excel».

  • Подключения и свойства    Каждый внешний источник данных имеет связь с данными о каждом внешнем источнике данных и связанную с ним информацию о свойстве, которая иногда требует внесения изменений в зависимости от обстоятельств. Дополнительные сведения см. в дополнительных сведениях об управлении диапазонами внешних данных и их свойствами, создании,редактировании подключений к внешним данным и свойствах подключения.

  • Устаревшая версия    Традиционные методы, такие как устаревшие мастеры импорта и MSQuery, по-прежнему доступны. Дополнительные сведения см. в параметрах импорта и анализа данных, а также извлечении внешних данных с помощью Microsoft Query.

В следующих разделах более подробные сведения о том, что происходит за кадром на этом занятом поезде Excel.

Существуют свойства подключения, запроса и диапазона внешних данных. Оба свойства подключения и запроса содержат традиционные сведения о под соединении. В заголовке диалогового окна «Свойства подключения» означает, что с ним не связан ни один запрос, а с свойствами запроса нет. Свойства диапазона внешних данных контролируют макет и формат данных. Во всех источниках данных есть диалоговое окно «Свойства внешних данных», но для источников данных со связанными учетными данными и данными обновления используется большее диалоговое окно «Свойства внешних данных диапазона».

В следующих сведениях общались наиболее важные диалоговые окна, области, пути к командам и соответствующие разделы справки.

Диалоговое окно или области
Пути команд

Вкладки и туннель

Основной раздел справки

Последние источники

Данные>
последние источники

(Без вкладок)

Tunnels to Connect > Navigator dialog box

Управление настройками и разрешениями источника данных

Свойства подключения

МАСТЕР
подключения к данным OR

Data > Queries & Connections > Connections tab > (right click a connection) > Properties

Вкладка Usage

Definition Used In
(Использовано в)

Свойства подключения

Свойства запроса

Data> Existing Connections > (right click a connection) > Edit Connection Properties
ИЛИ
запросы> данных & подключения к| Вкладка «> «Запросы» (щелкните правой кнопкой мыши подключение) > свойств
Или
свойства>запроса
Or
Data> Refresh All>Connections (when positioned on a loaded query worksheet)

Вкладка Usage

Definition Used In
(Использовано в)

Свойства подключения

Запросы & connections

Data > Queries & Connections

Вкладка «Подключения»

вкладки «Запросы»

Свойства подключения

Существующие подключения

Данные>
существующие подключения

Вкладка «Таблицы»

в вкладке «Подключения»

Подключение к внешним данным

Свойства внешних данных

ИЛИ
свойства диапазона внешних данных
Или
свойства> данных (отключено, если не занесо на таблицу запроса)
 

Используется на вкладке диалоговом окне «Свойства подключения»)
 

Кнопка «Обновить» в правом туннелье в свойствах запроса

Управление диапазонами внешних данных и их свойствами

Свойства подключения >
«Определение» >
«Экспорт файла подключения»

Or
Query>Export Connection File

(Без вкладок)

Tunnels to
File dialog box
Data sources folder

Создание, изменение подключений к внешним данным и управление ими

Данные в книге Excel могут быть из двух разных мест. Данные могут храниться непосредственно в книге или во внешнем источнике данных, например в текстовом файле, базе данных или кубе OLAP. Этот внешний источник данных подключается к книге с помощью подключения к данным, которое является набором сведений о том, как найти внешний источник данных, войти в систему и получить к нему доступ.

Основное преимущество подключения к внешним данным — возможность периодически анализировать эти данные без многократного копирования в книгу (это операция, которая может быть трудоемкой и частой). После подключения к внешним данным вы также можете автоматически обновлять (обновлять) книги Excel из исходного источника при обновлении источника данных с новой информацией.

Сведения о под соединении хранятся в книге и также могут храниться в файле подключения, например в файле подключения к данным Office (ODC) или файле имени источника данных (DSN).

Чтобы внести внешние данные в Excel, необходим доступ к ним. Если доступ к внешнему источнику данных не находится на локальном компьютере, может потребоваться обратиться к администратору базы данных, чтобы узнать пароль, разрешения пользователей или другие сведения о под соединении. Если источником данных является база данных, убедитесь, что она не открыта в монопольном режиме. Если источником данных является текстовый файл или таблица, убедитесь, что другие пользователи не имеют доступа к ним.

Для многих источников данных для координации потока данных между Excel, файлом подключения и источником данных также требуется драйвер ODBC или поставщик OLE DB.

Подключение к внешним источникам данных

На следующей схеме ключевых моментах подключения к данным нет.

1. Существуют различные источники данных, к которые можно подключиться: службы Analysis Services, SQL Server, Microsoft Access, другие реляционные базы данных OLAP, электронные таблицы и текстовые файлы.

2. У многих источников данных есть связанный драйвер ODBC или поставщик OLE DB.

3. Файл подключения определяет все сведения, необходимые для доступа к источнику данных и извлечения данных из него.

4. Данные подключения копируется из файла подключения в книгу, и их можно легко изменить.

5. Данные копируется в книгу, чтобы их можно было использовать точно так же, как и данные, хранимые непосредственно в книге.

Чтобы найти файлы подключения, используйте диалоговое окно «Существующие подключения». (Выберите «Данные>существующие подключения.) В этом диалоговом окне можно увидеть следующие типы подключений:

  • Подключения в книге    

    В этом списке отображаются все текущие подключения в книге. Список создается на окне подключений, которые вы уже определили, с помощью диалоговых окна «Выбор источника данных» мастера подключения к данным, или на окне подключений, выбранных в этом диалоговом окне как подключение.

  • Файлы подключения на компьютере    

    Этот список создается из папки «Мои источники данных», которая обычно хранится в папке «Документы».

  • Файлы подключения в сети    

    Этот список можно создать на основе набора папок в локальной сети, расположение которых можно развернуть в сети при развертывании групповых политик Microsoft Office или библиотеки SharePoint. 

Excel также можно использовать в качестве редактора файлов подключений для создания и изменения подключений к внешним источникам данных, которые хранятся в книге или файле подключения. Если нужного подключения нет, вы можете создать подключение, нажав кнопку «Обзор» и выбрав диалоговое окно «Выбор источника данных», а затем нажав кнопку «Создать источник», чтобы запустить мастер подключения к данным.

После создания подключения вы можете использовать диалоговое окно «Свойства подключения» (выберите «Свойства подключения» >«Запросы & Подключения >» > (щелкните правой кнопкой мыши «Свойства > подключения») для управления различными настройками подключений к внешним источникам данных, а также использования, повторного использования или переключения файлов подключения.

Примечание    Иногда диалоговое окно «Свойства подключения» называется диалогом «Свойства запроса», если с ним связан запрос, созданный в Power Query (прежнее название — «& Преобразовать»).

Если для подключения к источнику данных используется файл подключения, Excel копирует сведения о подключении из файла подключения в книгу Excel. При внесении изменений в диалоговом окне «Свойства подключения» вы редактируете данные подключения к данным, хранимые в текущей книге Excel, а не исходный файл подключения, который мог использоваться для создания подключения (указывается именем файла, которое отображается в свойстве «Файл подключения» на вкладке «Определение»). После изменения данных подключения (за исключением свойств «Имя подключения» и «Описание подключения») ссылка на файл подключения удаляется, а свойство «Файл подключения» удаляется.

Чтобы гарантировать, что файл подключения всегда используется при обновлении источника данных, на вкладке «Определение» нажмите кнопку «Всегда пытаться использовать этот файл для обновления данных». Если этот установить, все книги, которые используют этот файл подключения, всегда будут использовать изменения файла подключения, для которых также должно быть за установлено это свойство.

В диалоговом окне Connections можно легко управлять этими подключениями, включая их создание, редактирование и удаление (выберите данные> Запросы & Connections >Connections > > (щелкните правой кнопкой мыши подключение) > Свойства.) В этом диалоговом окне можно сделать следующее: 

  • Создание, изменение, обновление и удаление подключений, которые используются в книге.

  • Проверьте источник внешних данных. Это можно сделать, если подключение было определено другим пользователем.

  • Показывать, где каждое подключение используется в текущей книге.

  • Диагностика сообщения об ошибке, которое касается подключений к внешним данным.

  • Перенаправить подключение к другому серверу или источнику данных или заменить файл подключения для существующего подключения.

  • Легко создавайте файлы подключения и делитесь ими с пользователями.

Файлы подключений особенно полезны для совместного доступа к подключениям, что делает подключения более обнаруживаемыми, повышает уровень безопасности подключений и облегчает администрирование источников данных. Лучший способ поделиться файлами подключения — поместить их в безопасное и надежное расположение, например в сетевую папку или библиотеку SharePoint, где пользователи могут читать файл, но только назначенные пользователи могут изменять его. Дополнительные сведения см. в подмноговом окне «Совместное передачу данных с помощью ODC».

Использование ODC-файлов

Вы можете создавать файлы подключения к данным Office (ODC), подключаясь к внешним данным с помощью диалоговых окна «Выбор источника данных» или с помощью мастера подключения к новым источникам данных. В ODC-файле для хранения сведений о под соединении используются пользовательские HTML- и XML-теги. Вы можете легко просматривать и редактировать содержимое файла в Excel.

Вы можете поделиться файлами подключения с другими людьми, чтобы предоставить им такой же доступ к внешнему источнику данных. Другим пользователям не требуется настроить источник данных для открытия файла подключения, но им может потребоваться установить драйвер ODBC или поставщик OLE DB, необходимый для доступа к внешним данным на компьютере.

Рекомендуется использовать ODC-файлы для подключения к данным и обмена данными. Вы можете легко преобразовать другие традиционные файлы подключения (DSN, UDL и файлы запросов) в ODC-файл, открыв файл подключения и нажав кнопку «Экспорт файла подключения» на вкладке «Определение» в диалоговом окне «Свойства подключения».

Использование файлов запросов

Файлы запросов — это текстовые файлы, которые содержат сведения об источнике данных, включая имя сервера, на котором находятся данные, и сведения о под соединении, которые вы предоставляете при создании источника данных. Файлы запросов — это традиционный способ поделиться запросами с другими пользователями Excel.

Использование DQY-файлов запросов    С помощью Microsoft Query можно сохранять DQY-файлы, содержащие запросы на данные из реляционных баз данных или текстовых файлов. Открыв эти файлы в Microsoft Query, вы можете просмотреть данные, возвращенные запросом, и изменить запрос, чтобы получить другие результаты. DQY-файл можно сохранить для любого запроса, который вы создаете, с помощью мастера запросов или непосредственно в Microsoft Query.

Использование OQY-файлов запросов    OQY-файлы можно сохранять для подключения к данным в базе данных OLAP на сервере или в автономный файл куба (.cub). При создании источника данных для базы данных или куба OLAP с помощью мастера многомерных подключений автоматически создается OQY-файл. Так как базы данных OLAP не уорганизованы в записи или таблицы, для доступа к ним нельзя создавать запросы и DQY-файлы.

Использование RQY-файлов запросов    Excel может открывать файлы запросов в формате RQY, чтобы поддерживать драйверы источников данных OLE DB, которые используют этот формат. Дополнительные сведения см. в документации к драйверу.

Использование файлов запросов QRY    Microsoft Query может открывать и сохранять файлы запросов в формате QRY для использования с более ранними версиями Microsoft Query, в которые не удается открыть DQY-файлы. Если у вас есть файл запроса в формате QRY, который вы хотите использовать в Excel, откройте его в Microsoft Query, а затем сохраните в формате DQY. Сведения о сохранении DQY-файлов см. в справке Microsoft Query.

Использование файлов веб-запроса Iqy    Excel может открывать файлы веб-запросов Iqy для извлечения данных из Интернета. Дополнительные сведения см. в теме «Экспорт в Excel из SharePoint».

Диапазон внешних данных (также называемый таблицей запроса) — это определенное имя или имя таблицы, которое определяет расположение данных, передаренных на таблицу. При подключении к внешним данным Excel автоматически создает диапазон внешних данных. Единственным исключением из этого правила является отчеты pivotttable, подключенные к источнику данных, в которых не создается диапазон внешних данных. В Excel можно форматирование и разложить диапазон внешних данных или использовать его в вычислениях, как и любые другие данные.

Excel автоматически называет диапазон внешних данных следующим образом:

  • Имена внешних данных в диапазоне от файлов подключения к данным Office (ODC) и имени файла одинаковы.

  • Диапазоны внешних данных из баз данных называются именем запроса. По Query_from_источником данных является имя источника данных, который использовался для создания запроса.

  • Диапазоны внешних данных от текстовых файлов называются текстовыми именами файлов.

  • Диапазоны внешних данных от веб-запросов называются именем веб-страницы, на которой были извлечены данные.

Если на вашем компьютере несколько диапазонов внешних данных из одного источника, они нуметы. Например, MyText, MyText_1, MyText_2 и т. д.

У диапазона внешних данных есть дополнительные свойства (которые не следует путать с свойствами подключения), которые можно использовать для управления данными, например для сохранения форматирования ячеок и ширины столбцов. Эти свойства диапазона внешних данных можно изменить, нажав кнопку «Свойства» в группе «Подключения» на вкладке «Данные» и внося изменения в диалоговые окна «Свойства диапазона внешних данных» или «Свойства внешних данных».

Пример диалогового окна "Свойства диапазона внешних данных"

Пример диалогового окна "Свойства внешнего диапазона"

Существует несколько объектов данных (например, диапазон внешних данных и отчеты в отчете, которые можно использовать для подключения к различным источникам данных). Однако тип источника данных, к который можно подключиться, отличается от типа каждого объекта данных.

Вы можете использовать и обновлять подключенные данные в службы Excel. Как и для любого внешнего источника данных, может потребоваться проверка подлинности для доступа. Дополнительные сведения см. в теме «Обновление подключения к внешним данным в Excel». Fдополнительные сведения об учетных данных см. в службы Excel параметрах проверки подлинности.

В таблице ниже общались сведения о том, какие источники данных поддерживаются для каждого объекта данных в Excel.

Excel
данные
объект



Создает
Внешняя
данные
диапазон?

OLE
DB

ODBC

Текст
файл

HTML
файл

XML
файл

SharePoint
список

Мастер импорта текста

Да

Нет

Нет

Да

Нет

Нет

Нет

Отчет в области «Отчеты и отчеты»
(не OLAP)

Нет

Да

Да

Да

Нет

Нет

Да

Отчет в области «Отчеты и отчеты»
(OLAP)

Нет

Да

Нет

Нет

Нет

Нет

Нет

Таблица Excel

Да

Да

Да

Нет

Нет

Да

Да

Карта XML

Да

Нет

Нет

Нет

Нет

Да

Нет

Веб-запрос

Да

Нет

Нет

Нет

Да

Да

Нет

Мастер подключения к данным

Да

Да

Да

Да

Да

Да

Да

Microsoft Query

Да

Нет

Да

Да

Нет

Нет

Нет

Примечание: Эти файлы: текстовый файл, импортируемый с помощью мастера импорта текста, XML-файл, импортируемый с помощью карты XML, и HTML- или XML-файл, импортируемый с помощью веб-запроса, не используют драйвер ODBC или поставщик OLE DB для подключения к источнику данных.

службы Excel обходного пути для таблиц и именовых диапазонов Excel

Если вы хотите отобразить книгу Excel в службы Excel, вы можете подключиться к данным и обновить их, но для этого нужен отчет таблицы. службы Excel не поддерживает диапазоны внешних данных, то службы Excel не поддерживает таблицу Excel, подключенную к источнику данных, веб-запросу, карте XML или Microsoft Query.

Однако это ограничение можно обойти, подключив с помощью таблицы к источнику данных, а затем спроектировать и разметить ее как двумерную таблицу без уровней, групп или подытогов, чтобы отображались все нужные значения строк и столбцов. 

Давайте отпустим дорожку памяти базы данных.

О MDAC, OLE DB и OBC

Во-первых, приносим извинения за все акронимы. Компоненты доступа к данным Майкрософт (MDAC) 2.8 входят в состав Microsoft Windows. С помощью MDAC можно подключаться к данным из самых разных реляционных и нереляционных источников и использовать их. Вы можете подключаться к различным источникам данных с помощью драйверов ODBC или поставщиков OLE DB, которые были либо разработаны корпорацией Майкрософт, либо разработанными сторонними поставщиками. При установке Microsoft Office на компьютер добавляются дополнительные драйверы ODBC и поставщики OLE DB.

Чтобы отобразить полный список поставщиков OLE DB, установленных на компьютере, отобразите диалоговое окно «Свойства связи данных» из файла связи с данными, а затем перейдите на вкладку «Поставщик».

Чтобы посмотреть полный список установленных на компьютере поставщиков ODBC, отобразите диалоговое окно «Администратор базы данных ODBC» и перейдите на вкладку «Драйверы».

Вы также можете использовать драйверы ODBC и поставщики OLE DB других производителей для получения информации из других источников, кроме источников данных Майкрософт, включая другие типы баз данных ODBC и OLE DB. Чтобы получить сведения об установке этих драйверов ODBC или поставщиков OLE DB, ознакомьтесь с документацией к базе данных или обратитесь к ее поставщику.

Использование ODBC для подключения к источникам данных

В архитектуре ODBC приложение (например, Excel) подключается к диспетчеру драйверов ODBC, который, в свою очередь, использует определенный драйвер ODBC (например, Microsoft SQL ODBC) для подключения к источнику данных (например, к базе данных Microsoft SQL Server).

Чтобы подключиться к источникам данных ODBC, сделайте следующее:

  1. Убедитесь, что на компьютере с источником данных установлен соответствующий драйвер ODBC.

  2. Определите имя источника данных (DSN) с помощью администратора источника данных ODBC для хранения сведений о подключении в реестре или файле DSN либо строки подключения в Microsoft Visual Basic для передачи сведений о подключении непосредственно в диспетчер драйверов ODBC.

    Чтобы определить источник данных, в Windows нажмите кнопку «Начните» и выберите «Панель управления». Щелкните «Система и обслуживание»и выберите «Администрирование». Щелкните «Производительность и обслуживание»и выберите «Администрирование». и щелкните «Источники данных» (ODBC). Для получения дополнительных сведений о различных параметрах нажимайте кнопку справки в каждом диалоговом окне.

Машинные источники данных

Машинные источники данных хранят сведения о подстройке в реестре на определенном компьютере с определенным пользователем именем. Машинные источники данных можно использовать только на том компьютере, на который они были определены. Существует два типа машинных источников данных — пользовательские и системные. Источники данных пользователя могут использоваться только текущим пользователем и видны только этому пользователю. Источники системных данных могут использоваться всеми пользователями на компьютере и видны всем пользователям на этом компьютере.

Машинный источник данных особенно полезен, если требуется обеспечить дополнительные сведения о безопасности, так как он гарантирует, что только пользователи, во входя в систему, смогут просматривать его и что удаленный пользователь не сможет скопировать его на другой компьютер.

Файлы источников данных

Файлы источников данных (также называемые DSN-файлами) хранят сведения о под соединении в текстовом файле, а не в реестре и, как правило, более гибки в использовании, чем машинные источники данных. Например, вы можете скопировать файлный источник данных на любой компьютер с правильным драйвером ODBC, чтобы приложение использовало согласованную и точную информацию о под соединении на всех своих компьютерах. Кроме того, вы можете разместить файл данных на одном сервере, совместно использовать его на разных компьютерах в сети и легко сохранять сведения о под соединении в одном месте.

Файл может также стать недоступным для всех пользователей. Файл, который невозможно сделать одним из источников данных, находится на одном компьютере и указывает на машинный источник данных. Для доступа к существующим машинным источникам данных из файловых источников данных можно использовать такие источники.

Использование OLE DB для подключения к источникам данных

В архитектуре OLE DB приложение, которое имеет доступ к данным, называется потребителем данных (например, Excel), а программа, которая обеспечивает доступ к данным, называется поставщиком баз данных (например, поставщиком Microsoft OLE DB для SQL Server).

Файл универсальных связей данных (UDL) содержит сведения о под соединении, которые используются потребителем данных для доступа к источнику данных через его поставщика OLE DB. Чтобы создать сведения о подмыве, с помощью одного из следующих окна:

  • В мастере подключения данных в диалоговом окне «Свойства связи с данными» определите связь данных для поставщика OLE DB. 

  • Создайте пустой текстовый файл с расширением UDL и отредактйте его, чтобы отобразить диалоговое окно «Свойства ссылки на данные».

См. также

Справка по Power Query для Excel

Нужна дополнительная помощь?

These configurations worked in January of 2020 on my new machine build:

(1 — x64 only) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 installed with /passive argument, VStudio build settings set to x64 explicitly, with the following connection string: Provider= Microsoft.ACE.OLEDB.16.0; Data Source=D:…MyDatabase.accdb

(2 — x64 or x32) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 installed with /passive argument, PLUS AccessDatabaseEngine 2010 (32bit) installed with /passive argument, VStudio build settings set to AnyCPU, with the following connection string: Provider= Microsoft.ACE.OLEDB.16.0; Data Source=D:…MyDatabase.accdb

(3 — x32 only) Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32bit) installed with /passive argument, VStudio build settings set to x86, with the following connection string: Provider= Microsoft.ACE.OLEDB.12.0; Data Source=D:…MyDatabase.accdb

FAILURE NOTES

Using the ACE.OLEDB.12.0 x64 provider in the connection string failed with only the AccessDatabaseEngine_x64 2016 installed as above in (1).

Using AnyCPU in the visual studio build settings failed in (1). Setting x64 is required. Maybe this is because AnyCPU means that Vstudio must see an x32 ACE.OLEDB.nn.0 provider at compile time.

The ACE.OLEDB.12.0 2016 x32 /passive engine would NOT install when it saw x64 applications around. (The ACE.OLEDB.12.0 2010 x32 /passive installer worked.)

CONCLUSIONS

To use x64 build settings, you need to have the 2016 x64 database engine AND the ACE.OLEDB.16.0 connection-string provider AND explicit x64 build settings to work with Office 365 in January of 2020. Using the /passive option makes installations easy. Credit to whoever posted that tip!

To use AnyCPU, I needed to have both the ACE.OLEDB.12.0 2010 x32 engine and the ACE.OLEDB.16.0 x64 engines installed. That way Vstudio could see both x32 and x64 engines at «AnyCPU» compile time. I could change the provider connection string to ACE.OLEDB.12.0 for x32 operation or to ACE.OLEDB.16.0 for x64 operation. Both worked fine.

To use x86 build settings, you need to have the 2010 x32 database engine AND the ACE.OLEDB.12.0 connection-string provider AND explicit x86 build settings to work with Office 365 x32 in January of 2020.

Linked servers allow SQL Server access to data from a remote data source. A remote data source can be another SQL Server instance or other data sources such MySQL, Access databases, Oracle, Excel workbooks, text files etc.

SQL Server connects to the remote data source via an OLE DB provider. There are variations of the OLE DB providers depending on data source that want to establish connection to. There are the Microsoft OLE DB Provider for Oracle, Microsoft OLE DB Provider for SQL Server, OLE DB Provider for Jet etc. providers:

Microsoft SQL Server supports connections to other OLE DB data sources on a persistent or an ad hoc basis. The persistent connection is known as a linked server. An ad hoc connection, that is made for the sake of a single query, is known as a distributed query.

A distributed query can be run without creating a linked server first, by using the Transact-SQL OPENROWSET and OPENDATASOURCE functions.

When executing a T-SQL statement against a linked server, the OLE DB provider (e.g. OLE DB Provider for Jet) for the linked server is loaded into the SQL Server memory address space, then SQL Server takes the T-SQL statement and calls the OLE DB interface. Then the OLE DB interface provides a connection to the remote data source (e.g. Excel file). The OLE DB provider then processes the result set and returns the results to the SQL Server client that made the initial call.

In this article we’ll show how to create a linked server to query Excel data from the Excel file (*.xlsx) using the Microsoft.ACE.OLEDB.12.0 OLE DB provider and also how can be done by using the OPENROWSET and OPENDATASOURCE functions.

Creating a linked server with the Microsoft.ACE.OLEDB.12.0 OLE DB provider

To import data from an Excel file (Excel 2007 (xlsx) and above) to SQL Server the Microsoft.ACE.OLEDB.12.0 OLE DB driver should be installed.

The Microsoft.ACE.OLEDB.12.0 OLE DB driver can be used on SQL Server 32-bit editions for Excel 2007 files, or later, or on SQL Server 64-bit editions for any Excel files.

There is one more provider; Microsoft. Jet. OLEDB.4.0 which can be used on SQL Server 32-bit editions for Excel 2003 files (or earlier).

A list of all currently available providers in SQL Server can be seen under the Providers folder:

From this link you can download and install the Microsoft.ACE.OLEDB.12.0 OLE DB driver. Depending on which version of SQL Server (32-bit or 64-bit) use, there are two versions of the Microsoft.ACE.OLEDB.12.0 OLE DB driver that can be installed:

  • AccessDatabaseEngine.exe is for the SQL Server 32-bit version
  • AccessDatabaseEngine_X64.exe is for the SQL Server 64-bit version

Note that if AccessDatabaseEngine_X64.exe was installed, and SQL Server 32-bit version is used. The error below may appear when creating a linked server for querying Excel data:

Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)
– – – – – – – – – – – – – – – –
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
– – – – – – – – – – – – – – – –
The OLE DB provider “Microsoft.ACE.OLEDB.12.0” has not been registered. (Microsoft SQL Server, Error: 7403)

When the appropriate AccessDatabaseEngine executable file is installed, the Microsoft.ACE.OLEDB.12.0 OLE DB driver will appear in the list of the available drivers under the Providers folder:

After installing appropriate AccessDatabaseEngine, a linked server can be created. To do that, right click on the Linked Servers folder and choose the New Linked Server command:

This will open the New Linked Server dialog:

In this dialog, the name of a linked server and server type must be identified. In the Linked server box any name for the linked server can be entered (e.g. ExcelData).

If SQL Server is checked, then a linked server will be an SQL Server instance. More about creating a SQL Server linked server can be found on the How to create and configure a linked server in SQL Server Management Studio page. Since this article is about using the Excel data source, in the Server type section, choose the Other data source radio button and from the Providers combo box, choose the Microsoft Office 12.0 Access Database Engine OLE DB Provider item:

In the Product name box, put the name of the OLE DB data source to add as a linked server (e.g. Excel). In the Data source box the type the full path and file name of the Excel file (e.g. C:TestExcel_Data.xlsx).

For the Provider string field, enter Excel 12.0:

Note, if you are using the Excel 97-2003 (.xls) files, in the Provider string field should be enter “Excel 8.0”.

In case that the wrong name was entered in the Provider string field, the following error will appear:

The linked server has been created but failed a connection test. Do you want to keep the linked server?
– – – – – – – – – – – – – – – –
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
– – – – – – – – – – – – – – – –
Cannot initialize the data source object of OLE DB provider “Microsoft.ACE.OLEDB.12.0” for linked server “EXCELDATA”.
OLE DB provider “Microsoft.ACE.OLEDB.12.0” for linked server “EXCELDATA” returned message “Could not find installable ISAM.”. (Microsoft SQL Server, Error: 7303)

After entering the correct name in the Provider string field, press the OK button on the New Linked Server dialog to create the new linked server. During the process of creating a linked server the below error message may appear:

Press Yes to create the EXCELDATA linked server. The EXCELDATA linked server will appear under the Linked Server folder:

But when you look for data in the Tables folder of the default database the following error will appear:

Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)
– – – – – – – – – – – – – – – –
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
– – – – – – – – – – – – – – – –
Cannot initialize the data source object of OLE DB provider “Microsoft.ACE.OLEDB.12.0” for linked server “EXCELDATA”. (Microsoft SQL Server, Error: 7303)

To resolve this error and the error above, close SQL Server Management Studio (SSMS) and run it again, but this time as an administrator:

Now, when expanding the Tables folder, the Excel sheets will appear. Note that every sheet is shown as SQL Server table with a dollar sign ($) at the end:

To create the a linked server by using T-SQL simply use the sp_addlinkedserver stored procedure paste and execute the following code into a query editor:

EXEC sp_addlinkedserver

     @server = N‘EXCELDATA’,

     @srvproduct = N‘Excel’,

     @provider = N‘Microsoft.ACE.OLEDB.12.0’,

     @datasrc = N‘C:TestExcel_Data.xlsx’,

     @provstr = N‘Excel 12.0’;

More about creating a linked server using T-SQL can be found on the How to create, configure and drop a SQL Server linked server using Transact-SQL page.

Querying Excel data using the linked server

Now that the linked server is created, let’s query some Excel data!

The following SQL code will list all data from the Sheet1 in the Excel_Data.xlsx file for which we are created the linked server:

SELECT * FROM EXCELDATA...[Sheet1$]

But, when execute this code the error message may appear:

Msg 7399, Level 16, State 1, Line 2
The OLE DB provider “Microsoft.ACE.OLEDB.12.0” for linked server “EXCELDATA” reported an error. Access denied.
Msg 7301, Level 16, State 2, Line 2
Cannot obtain the required interface (“IID_IDBCreateCommand”) from OLE DB provider “Microsoft.ACE.OLEDB.12.0” for linked server “EXCELDATA”.

This usually happens because of inadequate permissions.

One way to resolve this is, go to the SQL Server Configuration Manager:

From the SQL Server Configuration Manager dialog, select SQL Server for on which has created a linked server:

Right click, and from the context menu, click the Properties option:

On the SQL Server Properties dialog under the Log on cart, choose the Built-in account radio button and from the combo box, select the Local System item:

From the SQL Server Properties dialog click the Apply button and press the Yes button on the Confirm Account Change warning message box:

Now, open SQL Server Manage Studio as administrator and in a query editor execute the SQL code:

SELECT * FROM EXCELDATA...Sheet1$

The following result will appear:

This will list all data from Sheet1 of the Excel_Data.xlsx file.

After all these settings, you are still getting the same error, maybe Microsoft Data Access Components (MDAC) do not be work properly. For more information, see this Microsoft article.

The following SQL code will insert data from Sheet1 to the SQL Server table ‘SQLTable’:

INSERT INTO dbo.SQLTable(ID,Name)

SELECT ID, Name FROM EXCELDATA...Sheet1$

When query the SQLTable table, the following result will appear:

Querying Excel data using the distributed queries

To access data to an Excel file via SSMS without creating a linked server first use the Transact-SQL OPENROWSET and OPENDATASOURCE functions.

To establish connection and querying data from the Excel data source using OPENROWSET function type the following SQL code in query editor:

SELECT * FROM OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’, ‘Excel 12.0;Database=C:TestExcel_Data.xlsx;’, ‘SELECT * FROM [Sheet1$]’)

But, when executing the above code the following error may occur:

Msg 15281, Level 16, State 1, Line 8
SQL Server blocked access to STATEMENT ‘OpenRowset/OpenDatasource’ of component ‘Ad Hoc Distributed Queries’ because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of ‘Ad Hoc Distributed Queries’ by using sp_configure. For more information about enabling ‘Ad Hoc Distributed Queries’, search for ‘Ad Hoc Distributed Queries’ in SQL Server Books Online.

To resolve this error the Ad Hoc Distributed Queries option should be enabled in order to open a connection to a remote server using the OPENROWSET or OPENDATASOURCE. This can be achieved by using the sp_configure procedure and execute the following SQL code in a query editor:

EXEC sp_configure ‘show advanced options’, 1

RECONFIGURE

EXEC sp_configure ‘Ad Hoc Distributed Queries’, 1

If case that the above executed query show the following error:

Configuration option ‘show advanced options’ changed from 0 to 1. Run the RECONFIGURE statement to install.
Msg 5808, Level 16, State 1, Line 2
Ad hoc update to system catalogs is not supported.

Use the RECONFIGURE WITH OVERRIDE instead of RECONFIGURE:

EXEC sp_configure ‘show advanced options’, 1

RECONFIGURE WITH OVERRIDE

EXEC sp_configure ‘Ad Hoc Distributed Queries’, 1

RECONFIGURE WITH OVERRIDE

Now when executing the SQL code:

SELECT * FROM OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’, ‘Excel 12.0;Database=C:TestExcel_Data.xlsx;’, ‘SELECT * FROM [Sheet1$]’)

The following result in the Results grid will be shown:

The same result can be obtained used the OPENDATASOURCE function. Type the following code:

SELECT * FROM OPENDATASOURCE(‘Microsoft.ACE.OLEDB.12.0’,

  ‘Data Source=C:TestExcel_Data.xlsx;Extended Properties=Excel 12.0’)...[Sheet1$]

Like linked servers, OPENROWSET and OPENDATASOURCE use OLE DB to connect to the remote data source; however, these functions do not encompass all the features included with linked servers, which is generally why linked servers are the preferred option.

Other articles in this series:

  • How to create and configure a linked server in SQL Server Management Studio
  • How to create, configure and drop a SQL Server linked server using Transact-SQL
  • How to configure a Linked Server using the ODBC driver
  • How to create a linked server to an Azure SQL database

See more

To boost your SQL Server development productivity, check out Free SQL Server Management Studio add-ins.

Useful links

  • Querying remote data sources in SQL Server
  • How to use Excel with SQL Server linked servers and distributed queries
  • OPENDATASOURCE (Transact-SQL)
  • OPENROWSET (Transact-SQL)
  • Author
  • Recent Posts

Marko Zivkovic

Marko aka “Zivko” is a senior software analyst from Nis, Serbia focusing on SQL Server and MySQL as well as client technologies like SSMS, Visual Studio, and VSCode. He has extensive experience with quality assurance, issue escalation/resolution, and product evangelism.

He is a prolific author of authoritative content related to SQL Server including a number of “platinum” articles (top 1% in terms of popularity and engagement). His writing covers a range of topics on MySQL and SQL Server including remote/linked servers, import/export, LocalDB, SSMS, and more.

In his part-time, Zivko likes basketball, foosball (table-soccer), and rock music.

See more about Marko at LinkedIn

View all posts by Marko Zivkovic

Marko Zivkovic

Наверх

Содержание

  • 1 Подключение с помощью Microsoft.ACE.OLEDB.12.0
  • 2 Линковка Excel к MSSQL
  • 3 Подключение с помощью Microsoft Jet 4.0 Ole DB Provider

Подключение с помощью Microsoft.ACE.OLEDB.12.0

Провайдер данных Microsoft.ACE.OLEDB.12.0 подходит как для 32-битных, так и для 64 -битных версий SQL-сервера.

В данном параграфе описывается пример подключения Excel-файла sample.xlsx как связанного сервера на примере MSSQL 2008 SP3 x64.

Шаг 1. Для начала работы скачайте установочные файлы провайдера Microsoft.ACE.OLEDB.12.0 по ссылке http://www.microsoft.com/en-us/download/details.aspx?id=13255.

Если у вас 64-битная версия SQL Server используйте установочный файл AccessDatabaseEngine_x64.exe.

Excel 001.png

Шаг 2. Для установки провайдера используйте запуск файла через командную строку с ключом /passive.

C:AccessDatabaseEngine_x64.exe /passive 

Excel 004.png Excel 002.png

Шаг 3. Получить данные напрямую из файла можно с помощью команды OPENROWSET

 select * from OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
		          'Excel 8.0; HDR=Yes; Database=C:Sample.xlsx', 
       		          'Select  * from [Sheet1$]')

Изменить данные можно с помощью запроса:

 UPDATE OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
		   'Excel 8.0; HDR=Yes; Database=C:Sample.xlsx', 
		   'Select  * from [Sheet1$]')
 SET id='123456'
 WHERE phone='84952294989'

Убедитесь, что в Excel есть указанное поле [id]. Часто бывает, что столбцы называются [F15]

Ввести строку можно с помощью запроса:

 INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
			'Excel 12.0;Database=C:Sample.xlsx', 
			'Select * from [Sheet1$]')
 SELECT id, phone, comment from sqltable

Количество столбцов в Excel и в возвращаемом запросе select должно совпадать.

ВНИМАНИЕ: При возникновении ошибки Cannot get the column information from OLE DB provider «Microsoft.ACE.OLEDB.12.0» for linked server «(null)» выполните следующий запрос:

USE [master]
GO
EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
GO
EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1
GO

ВНИМАНИЕ: При возникновении ошибки SQL Server заблокировал доступ к STATEMENT «OpenRowset/OpenDatasource» компонента «Ad Hoc Distributed Queries», поскольку он отключен в результате настройки конфигурации безопасности сервера выполните поочередно два запроса.

sp_configure 'show advanced options', 1;
GO
reconfigure
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
reconfigure
GO

Используемые материалы: http://habrahabr.ru/post/219415/ и http://social.msdn.microsoft.com

Линковка Excel к MSSQL

Чтобы прилинковать Excel файл выполните следующие запросы в SQL Server Management Studio

exec sp_addlinkedserver @server = 'XlsLnkSrv', 
@srvproduct = 'ACE 12.0', 
@provider = 'Microsoft.ACE.OLEDB.12.0', 
@datasrc = 'C:Sample.xlsx', 
@provstr = 'Excel 12.0; HDR=Yes'

где

  • XlsLnkSrv — название связанного сервера
  • C:Sample.xlsx — абсолютный путь к требуемому Excel-файлу

Excel 003.png

Если все выполнено правильно, то после обновления обозревателя объектов вы увидите название установленного поставщика Microsoft.ACE.OLEDB.12.0 в Объекты сервера / Связанные серверы / Поставщики

Excel 005.png

Считать данные можно с помощью команды openquery:

select * from openquery (XlsLnkSrv, 'Select * from [Sheet1$]')

Подключение с помощью Microsoft Jet 4.0 Ole DB Provider

Скачайте установочные файлы провайдера по ссылке http://www.microsoft.com/en-us/download/details.aspx?id=23734.

Технология Jet 4.0 работает только на 32-битных версиях MSSQL.

Для создания связанного сервера используйте следующий SQL-запрос:

EXEC sp_addlinkedserver 'ExcelSource', 'Jet 4.0', 'Microsoft.Jet.OLEDB.4.0', 
'c:MyDataDistExcl.xls', NULL, 'Excel 8.0'  

EXEC sp_addlinkedsrvlogin 'ExcelSource', 'false', NULL, NULL </pre>

где

  • ExcelSource — название связанного сервера
  • c:MyDataDistExcl.xls — абсолютный путь к Excel-файлу

Для получения данных из Excel файла используется запрос:

Select * From [ExcelSource]...[Лист1$]

Провайдеры данных

Для работы с Excel 2003 (.Xls) можно использовать провайдер Microsoft Jet OLE DB 4.0.

SELECT * FROM OPENROWSET(
	'Microsoft.Jet.OLEDB.4.0', 
	'Excel 12.0;Database=d:tmpTimeSheets.xlsx;HDR=YES;IMEX=1', 
	'SELECT * FROM [Sheet1$]');

Для работы с Excel 2007 (.Xlsx) — Microsoft ACE OLEDB 12.0.

SELECT * FROM OPENROWSET (
    'Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0;Database=d:tmpTimeSheets.xlsx;HDR=YES;IMEX=1',
    'SELECT * FROM [Sheet1$]');

В Windows 10 открыть настройки источников данных ODBC можно написав «Источники данных ODBC» или через Панель управления Администрирование.

Extended Properties

  • HDR=YES|NO. HDR=YES означает, что первую строку листа, следует рассматривать как заголовки колонок. Т.о. значение из первой строки можно использовать как имена полей в sql запросах (любых: select, insert, update, delete).
  • IMEX=1|3. 1 — открыть соединение для чтения. 3 — для записи.

Создание Linked Server в Sql Server для доступа к Excel

EXEC sp_addLinkedServer
    @server= N'XLSX_2010',
    @srvproduct = N'Excel',
    @provider = N'Microsoft.ACE.OLEDB.12.0',
    @datasrc = N'd:tmpTimeSheets.xlsx',
    @provstr = N'Excel 12.0; HDR=Yes';
GO

После создания связанного сервера можно будет просмотреть имена доступных листов.

Затем, чтобы обратиться к сервису:

SELECT * FROM OPENQUERY (XLSX_2010, 'Select * from [Sheet1$]')
или
SELECT * FROM [XLSX_2010]...[Лист1$]

Обращение к лиcтам, диапазонам, полям

Для обращения к листу из SQL запроса нужно использовать имя листа, например: [Sheet1$] или [Лист1$]. Обращение к диапазону: [Sheet1$A16:F16].

Вставка данных в произвольное место

Примеры указания диапазона при вставке строк (insert)

  • [table1$B4:E20]
  • [table1$S4:U]
  • [table1$F:G]

При вставке должны выполняться следующие условия:

  • Первая строчка указанного диапазона дожна входить в диапазон ячеек с данными. Чтобы создать на листе диапазон с данными достаточно в углах некоторого прямоугольного диапазона (в левом верхнем и правом нижнем) вписать значение (C4:I7 на скриншоте). Т.е. сама первая строчка указанного в insert диапазона данные содержать не обязана, достаточно, чтобы она просто входила в такой диапазон. Иначе возникнет ошибка "This table contains cells that are outside the range of cells defined in this spreadsheet"
  • Хвост диапазона должен содержать пустые строки (хотя бы одну).

Пример: Дан лист, где заполнены только 2 ячейки: C4, I7. После выполнения команды INSERT INTO [table1$E6:G] VALUES(2, 'FF','2014-01-03') результат будет как на скриншоте. Поясним: строка E6:G6 является первой строкой диапазона для вставки. Она входит в заполненный диапазон C4:I7. Поэтому данные были вставлены на следующей пустой строке — 8. Из этого примера становится ясно, что через OleDb нельзя работать с несколькими независимыми диапазонами на одном листе, используя вставку (update будет работать).

Insert

Ошибки

  • System.Data.OleDb.OleDbException (0x80004005): Operation must use an updateable query. Соединение открыто для чтение, при этом происходит попытка внести изменения (выполнить insert, update или delete). Решение: открыть соединение для записи, установив свойство провайдера в строке соединения IMEX=3 (см. выше).
  • System.Data.OleDb.OleDbException (0x80004005): "This table contains cells that are outside the range of cells defined in this spreadsheet". Такая ошибка возникает при подпытке обновить (update) или вставить (insert) значения в диапазоне, в котором отсутствуют данные на листе.
    1. Если нужно произвести запись в определенные ячейки инструкцией update, то

Ссылки

  • https://www.codeproject.com/Tips/705470/Read-and-Write-Excel-Documents-Using-OLEDB
  • https://stackoverflow.com/questions/36987636/cannot-create-an-instance-of-ole-db-provider-microsoft-jet-oledb-4-0-for-linked
  • https://stackoverflow.com/questions/26267224/the-ole-db-provider-microsoft-ace-oledb-12-0-for-linked-server-null
  • http://www.ashishblog.com/importexport-excel-xlsx-or-xls-file-into-sql-server/
  • https://yoursandmyideas.com/2011/02/05/how-to-read-or-write-excel-file-using-ace-oledb-data-provider/
  • https://stackoverflow.com/questions/46373895/how-to-open-a-huge-excel-file-efficiently Несколько способов открыть большой Excel файл, в т.ч. с помощью OleDb.

Like this post? Please share to your friends:
  • Поставить электронную подпись на документ word онлайн
  • Поставить фильтр в excel сочетание клавиш
  • Поставить фильтр в excel на всех столбцах
  • Поставить точку в конце строки excel
  • Поставить текущую дату в excel формула