我们不提供 Microsoft OLE DB 提供程序的 64 位版本的 Jet。此外,我们不提供 64 位版本的 Jet ODBC 驱动程序。如果您使用 MicrosoftOLE DB 提供程序为 Jet 或 Jet ODBC 驱动程序连接到 64 位环境中的数据源,则会遇到不同的问题。
例如,您有 jet 使用 Microsoft OLE DB 提供程序的 32 位应用程序。如果迁移应用程序在 64 位模式下运行时,应用程序不能使用 jet 的 Microsoft OLEDB 提供程序连接到数据源。因为应用程序需要对 Jet 的64 位版本的 Microsoft OLE DB 提供程序,则会出现此问题。
How to get a x64 version of Jet? :http://blogs.msdn.com/b/psssql/archive/2010/01/21/how-to-get-a-x64-version-of-jet.aspx
不过我们可以通过下面的方法访问Excel:
1. 通过32位的Express版本作为中转,先将数据倒入Express然后再同步到64位数据库 (需要安装另外的Instance,麻烦)
2. 使用SSIS(非常方便)
3. 使用Microsoft Access Database Engine 2010 driver
下载路径:http://www.microsoft.com/en-us/download/details.aspx?id=13255
安装完之后我直接在自己机器上执行下面的命令查询Excel数据,成功:
--开启导入功能
EXEC sp_configure'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure'Ad Hoc Distributed Queries',1
GO
RECONFIGURE
--允许在进程中使用ACE.OLEDB.12
USE [master]
GO
EXEC master . dbo.sp_MSset_oledb_propN'Microsoft.ACE.OLEDB.12.0',N'AllowInProcess',1
GO
EXEC master . dbo.sp_MSset_oledb_propN'Microsoft.ACE.OLEDB.12.0',N'DynamicParameters',1
GO
SELECT * FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0','DataSource="D:\test\xltest.xlsx";
Extended properties=Excel 12.0')...[Customers$]
前提是安装Office 2010 64位版(32位版本的无法安装64位的ACE驱动),网上也有人说用命令 可以,我自己没有试成功。