MyTetra Share
Делитесь знаниями!
Как разрешить "Не удалось найти устанавливаемый ISAM". ошибка для поставщика OLE DB "Microsoft.ACE.OLEDB.12.0"
10.10.2019
10:02
Текстовые метки: ISAMб VBA, ADO, Connection, Recordset
Раздел: !Закладки - VBA - Access - Excel->Access



Как разрешить "Не удалось найти устанавливаемый ISAM". ошибка для поставщика OLE DB "Microsoft.ACE.OLEDB.12.0"

Яндекс.Директ

СМС рассылка без абонплаты!

Решения LoRaWAN для ЖКХ и города

Получите Допуск СРО! Акция - От 55т.р!


Я пытаюсь импортировать данные из файлов Excel 2007 (.xlsx) в SQL Server 2008 с помощью команды T-SQL OpenRowset() с поставщиком OLE DB "Microsoft.ACE.OLEDB.12.0" , и я получаю постоянная ошибка "Не удалось найти устанавливаемый ISAM". Все аппаратные средства 32-разрядные.


[Пересмотрено 1/10/12, чтобы попытаться более резко сосредоточиться на аномалиях)


Следующий оператор T-SQL создает ошибку:


SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',

'Data Source=C:\work\TestData.xlsx;Extended Properties="Excel 12.0 XML;HDR=YES"',

'SELECT * FROM [Sheet1$]'

)


Если я сохраню файл Excel в формате Excel 97-2003 (.xls) и использую более старый поставщик Microsoft.Jet.OLEDB.4.0 для импорта данных, он работает нормально. Это заставляет меня думать, что это не проблема безопасности или другая экологическая проблема.


SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',

'Excel 8.0;Database=C:\work\TestData.xls;HDR=YES',

'SELECT * FROM [Sheet1$]'

)


Однако, когда я пытаюсь создать файл *.xls с поставщиком Microsoft.ACE.OLEDB.12.0, который должен быть обратно совместим с форматом *.xls, он снова терпит неудачу с той же ошибкой:


SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',

'Data Source=C:\work\TestData.xls;Extended Properties="Excel 8.0;HDR=YES";',

'SELECT * FROM [Sheet1$]'

)


Кроме того, интересно, когда я использую мастер SSMS "Импорт данных...", он отлично работает. Я сохранил вывод мастера импорта данных в виде пакета SSIS и просмотрел файл SSIS, чтобы попытаться выяснить, как он работает, и он успешно использует поставщика Microsoft.ACE.OLEDB.12.0. Это строка соединения из пакета SSIS:


<DTS:Property DTS:Name="ConnectionString">

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\work\TestData.xlsx;Extended Properties="Excel 12.0 XML;HDR=YES";

</DTS:Property>


Я также выполнил соответствующую конфигурацию SQL Server, чтобы разрешить распространенный запрос OPENROWSET:


sp_configure 'show advanced options', 1

reconfigure

GO

sp_configure 'Ad Hoc Distributed Queries', 1

reconfigure

GO


Если я также установил следующие значения * sp_MSset_oledb_prop * (которые я нашел в сообщении где-нибудь)...


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


... тогда ошибка изменится на "Unspecified error":


OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "Unspecified error".

Msg 7303, Level 16, State 1, Line 1

Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".


Однако я не уверен, что это ошибка восходящего или нисходящего потока. (Теперь он находит "устанавливаемый ISAM", но впоследствии не работает?)


Я пробовал это с несколькими файлами Excel на двух разных машинах/операционных системах (Windows Server 2003, Windows XP SP3). Обе машины 32-разрядные.


Я также попытался переустановить версии AccessDatabaseEngine.exe для Office 2007 и Office 2010 (http://www.microsoft.com/download/en/details.aspx?id=23734 и http://www.microsoft.com/download/en/details.aspx?id=13255, соответственно), безрезультатно.


Подводя итог:


"Microsoft.Jet.OLEDB.4.0" работает с использованием T-SQL, но "Microsoft.ACE.OLEDB.12.0" этого не делает.

"Microsoft.ACE.OLEDB.12.0" работает с помощью мастера "Импорт данных..." (насколько я могу сказать из сохраненного файла задания SSIS).

Настройка свойств "AllowInProcess" и "DynamicParameters" на "1" изменяет ошибку на "Unspecified error". (Это шаг вперед?!)


Любые мысли?

+18

tsql excel-2007 oledb openrowset isam

Martin_ATS 10 янв. '12 в 2:48

источник

поделиться

7 ответов


ПОПРОБУЙТЕ это, это может вам помочь:


установите path и strFileType согласно требованию


string connString = "";

// string strFileType = Path.GetExtension(UpfileName.FileName).ToLower();

// string path = UpfileName.PostedFile.FileName;


if (strFileType.Trim() == ".xls")

{


connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";

}

else if(strFileType.Trim() == ".xlsx")

{

connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";

}


+1

Sagar R 30 янв. '14 в 9:42

источник

поделиться


Хай также столкнулся с такой ситуацией, я решил ее


решаемые


string ConeectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + txtFlp.Text


+ ";Extended Properties=\"Excel 12.0 Xml;HDR=YES\"");


OleDbConnection oconn = new OleDbConnection(ConeectionString);</b>


0

user4049619 17 сент. '14 в 9:03

источник

поделиться

другие ответы


Связанные вопросы

2

Не удалось найти устанавливаемый ISAM. Ошибка сервера в приложении

1

Соединение OLEDB с базой данных Access с паролем: "Не удалось найти устанавливаемый ISAM"

0

сохраняйте это исключение System.Data.OleDb.OleDbException(0x80004005) :?

0

VB.NET Microsoft.ACE.OLEDB.12.0 - Выберите команду col


Похожие вопросы

66

Поставщик Microsoft.ACE.OLEDB.12.0 не зарегистрирован

11

Поставщик Microsoft.ACE.OLEDB.12.0 больше не может открывать .mdb под Windows 8

1

Как узнать причину разрешения поставщика OLE на SQL Server?

1

Агент SQL Server не может выполнить запрос OPENROWSET, но я могу - "Microsoft.ACE.OLEDB.12.0" для связанного сервера "(null)" сообщила об ошибке

0

Экспорт данных из SQL Server 2014 в Excel

0

Поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" вернул сообщение "Неопределенная ошибка"

0

"Не удалось найти Installable ISAM" С# Exception после чтения xls файла

0

Ошибка. Поставщик "Microsoft.ACE.OLEDB.12.0" не зарегистрирован на локальном компьютере.

0

Поставщик "Microsoft.ACE.OLEDB.12.0" не зарегистрирован на локальном компьютере. Microsoft Excel 2016

0

не удалось найти устанавливаемый isam [vb.net]


НАКОНЕЦ, решение!


Проверьте это: Msg 7302, уровень 16, состояние 1, строка 1 Невозможно создать экземпляр поставщика OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "(null)"


В принципе, вы переходите к


Панель управления > Администрирование > Службы компонентов


затем разверните


Службы компонентов > Компьютеры > Мой компьютеp > Конфигурация DCOM


находка


MSDAINITIALIZE


перейдите к


Свойствa > Безопасность > Разрешения запуска и активации


нажмите


Настроить > Изменить...


добавьте свое имя пользователя или "все", если вы предпочитаете


отметьте ВСЕ поля "разрешить" для нового пользователя/группы


и нажмите ОК на обеих страницах


Теперь посмотрите, работает ли ваша команда OpenRowSet/OpenDataSource


Благодаря Ramesh Babu Vavilla (vr.babu) с сайта social.technet.microsoft.com для ссылки

0

Hamid Sadeghian 19 мая '14 в 10:30

источник

поделиться


Это сработало для меня:


SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',

'Excel 12.0;HDR=NO;Database=C:\temp\file.xlsx;',[sheetname$])


0

Simon Turner 18 июл. '17 в 11:27

источник

поделиться


Попробуйте это


SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',

'EXCEL 12.0;DataBase=C:\TEMP\test.xlsx;Extended Properties="EXCEL 12.0 Xml;HDR=YES', [Sheet1$])


0

Gurm 26 февр. '13 в 17:01

источник

поделиться


Я думаю, что ответ скрывается в информации о пакете SSIS, которую вы опубликовали. Новый формат файла xlsx хранит данные в формате XML вместо старого. Посмотрите на это снова. Он читает... Расширенные свойства = "Excel 12.0 XML; HDR = YES


Не пропустите этот XML после стандартного материала. (Для чего это стоит, я также прочитал, что вам нужно "Excel 12.0 Macro" для подключения к файлу xslm.)


Попробуй. Странно, но, надеюсь, это работает.

0

IHateScreenNamesToo 27 апр. '12 в 18:16

источник

поделиться


Я решил с этим запросом:


SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',

'Excel 12.0;HDR=NO;Database=D:\Filename.xlsx;',

[SheetName$])


Кажется, sql не нравится раздел "Расширенные свойства"...


Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования