环境: windows server 2008 r2
sql server 2008 r2
office 2007
Ad Hoc Distributed Queries, xp_cmdshell已启用.
msjetoledb40.dll已注册.使用OPENDATASOURCE查询Excel时提示以下错误,
(同样的Excel在SQL2000下可以查询,可排除文件问题)SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=D:\xxx.xls;User ID=Admin;Password=;Extended Properties=EXCEL 8.0;')...[Sheet1$]
消息 7308,级别 16,状态 1,第 2 行
因为 OLE DB 访问接口 'Microsoft.Jet.OLEDB.4.0' 配置为在单线程单元模式下运行,
所以该访问接口无法用于分布式查询。
sql server 2008 r2
office 2007
Ad Hoc Distributed Queries, xp_cmdshell已启用.
msjetoledb40.dll已注册.使用OPENDATASOURCE查询Excel时提示以下错误,
(同样的Excel在SQL2000下可以查询,可排除文件问题)SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=D:\xxx.xls;User ID=Admin;Password=;Extended Properties=EXCEL 8.0;')...[Sheet1$]
消息 7308,级别 16,状态 1,第 2 行
因为 OLE DB 访问接口 'Microsoft.Jet.OLEDB.4.0' 配置为在单线程单元模式下运行,
所以该访问接口无法用于分布式查询。
下载地址是这个
http://www.microsoft.com/downloads/en/details.aspx?familyid=7554f536-8c28-4598-9b72-ef94e038c891&displaylang=en
调用方法参考
select * FROM OPENROWSET ('Microsoft.ACE.OLEDB.12.0' ,'Excel 12.0;Database=C:\Test2.xlsx;HDR=YES' ,
'SELECT * FROM [Sheet1$]' ) 就是把jet的链接关键字改掉
但又出现 7302错误
訊息 7302,層級 16,狀態 1,行 1
无法建立连接服务器 "(null)" 的 OLE DB 提供者 "Microsoft.ACE.OLEDB.12.0"。
1 你装了那个驱动了吗?如果有那就用那个,另外我也不清楚是不是装了驱动就可以用的,理论来说是这样的吧 :)或者你看看注册表项 在sqlserver分支下的provider下有没有
2 确认excel文件没有打开或者不在进程中
3 确认你的帐号有没有系统管理员权限(混合认证),c:\windows\temp目录,如果是用户名密码认证的那个(就要确认sqlserver启动账户对目录有权限
opendatasource打开Excel时有时OK有时不OK,有时重启SQL Server Service后就OK.不知为何.