Excel到SQL表错误消息7350

我正在使用这段代码将一个excel文件导入到一个sql表中

USE master GO sp_configure 'show advanced options', 1; RECONFIGURE; GO sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE; GO insert into memberform (id) SELECT * FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\\test.xls;HDR=YES', 'select * from [Sheet1$]') 

但是我得到错误:

消息7350,级别16,状态2,行1无法从链接服务器“(null)”的OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”>获取列信息。

有什么我应该首先参数化在SQL?

基本上,由于安全configuration,在SQL Server中默认禁用Ad hoc Distributed Queries ,并且不能使用OPENROWSETOPENDATASOURCE ,如果无法执行这些行集函数,则无法访问任何远程数据源。

运行以下查询以启用这些选项,以便您可以在没有任何其他问题的情况下使用这些选项

 USE master GO sp_configure 'show advanced options', 1; RECONFIGURE; GO sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE; GO 

从输出中,您可以看到“Ad hoc分布式查询”设置从0更改为1.现在您可以轻松地执行任何Ad hoc Query

注意 :默认情况下,此选项设置为0,您需要将其更改为1以激活此function。

希望这可以帮助!

我find了解决scheme,我刚刚安装了AccessDatabaseEngine_X64位。 原因我的SQL是64位和我的办公室32位这就是为什么它没有奏效。问题是,你不能安装Office 2007 32位Access数据库引擎x64。 您将需要此说明: https : //knowledge.autodesk.com/support/autocad-civil-3d/troubleshooting/caas/sfdcarticles/sfdcarticles/How-to-install-64-bit-Microsoft-Database-Drivers-alongside- 32位微软Office.html

同样在我的代码中,我应该使用喷气机的王牌。也因为我使用的Excel 2007,我需要改变它为Excel 12.0。 就像下面的例子

 SELECT * FROM OPENROWSET ('Microsoft.Ace.OLEDB.12.0', 'Excel 12.0;Database=C:\\test.xlsx;HDR=YES', 'select * from [Sheet1$]')