SQL Server和Microsoft.ACE.OLEDB.12.0

我得到以下内容:

消息7399,级别16,状态1,行1链接服务器“(null)”的OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”报告错误。 提供者没有给出关于错误的任何信息。 消息7303,级别16,状态1,行1无法初始化链接服务器“(null)”的OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”的数据源对象。

当我从SQLServer中的存储过程执行以下内容 –

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=c:\Users\v-bimoss\Source\Workspaces\External\Onesite\URLoadDB\Templates\T1-Current.xlsx', 'SELECT * FROM [Sheet1$]') 

我已经完成了关于这个主题的所有线索 – 但仍然有问题

我已经证实:

  1. 加载64位Microsoft.ACE.OLEDB.12.0驱动程序

  2. Ad Hoc分布式查询设置为1

  3. dynamic参数和允许进程都设置为1

  4. 将MSSQL更改为在我的帐户下运行

  5. 运行MSSQL的帐户和我正在使用的帐户都可以完全访问C:\Windows\ServiceProfiles\LocalService\AppData\Local\Temp

任何帮助,将不胜感激。 -wmm

不幸的是,OPENROWSET被认为是ACE的bug。 所以在试图调整的时候有很多不同的东西需要尝试。 添加和删​​除以下几个build议,希望能为你做到这一点:

1)需要使用Excel 12.0 Xml;调用xlsx文件Excel 12.0 Xml;

2) HDR=YES; 告诉是否存在标题logging。 它会崩溃,如果有,你有数字。 如果没有标题,则更改为NO。

3) IMEX=1; 这允许混合的数字和文本字段。 如果人们开始用数字混合字母。

4)基于ACE 12.0与ACE 14.0可能存在registry问题。 仔细检查你的版本。

5)最后,怪异怪异…当你有评论(或没有评论)时,OPENROWSET崩溃。 如果你有-- comment ,通过在破折号后面加一个空格, -- comment它有时会有所帮助。 所以,如果你有意见,尝试删除它们或重新安排他们,你可能会得到一个惊喜。 (我知道…这真的是一个令人伤心的事情)

 SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0 Xml;HDR=YES;IMEX=1;Database=c:\Users\v-bimoss\Source\Workspaces\External\Onesite\URLoadDB\Templates\T1-Current.xlsx', 'SELECT * FROM [Sheet1$]') 

无论如何,因为OPENROWSET可能有点不稳定,所以你可能需要使用不同的方式导入数据,例如暂存表或者csv文件等等。但是如果你能得到它的话,这可能是相当不错的。

希望帮助:)

我会检查这两个步骤,但特别是检查和更改,如果可以的话,运行SQL Server的用户:

无法为链接的服务器创buildOLE DB提供程序Microsoft.Jet.OLEDB.4.0实例null

链接服务器的OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”“(null)”