我试图将这个excel表格放到表格中,这样我就可以对它应用select语句等,用它的信息更新表格。
SELECT *
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\PB.xlsx',
'SELECT * FROM [Sheet1$]')
我正在运行64位机器。 不知道它是什么excel版本。
错误:
Msg 7399,Level 16,State 1,Line 1 链接服务器“(null)”的OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”报告错误。提供商未提供有关错误的任何信息。 Msg 7303,Level 16,State 1,Line 1 无法为链接服务器“(null)”初始化OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”的数据源对象。
当我更改为Excel 12.0时;
链接服务器“(null)”的OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”返回消息“找不到可安装的ISAM。”。 Msg 7303,Level 16,State 1,Line 1 无法为链接服务器“(null)”初始化OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”的数据源对象。
答案 0 :(得分:8)
此错误有5种可能原因。
4 ...
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
5 ....
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 0
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 0
GO
现在我不知道为什么会这样,特别是考虑到其他人都说他们应该设置为1.但是,对于我来说,将它们设置为零,在SQL Server 2008R2 32位和M上执行以下SQL语句的技巧$ Office 2007
Select *
into [temp_table$]
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\temp\EXPENDITURE REPORT.xls;HDR=YES;IMEX=1',
'SELECT * FROM [EXPENDITURE SHEET$]')
注意:我故意使用了一个示例,其中文件名和工作表名称都有空格以表明可以这样做。
答案 1 :(得分:7)
对于xlsx文件(Excel 2007-2010),您可以使用ACE oledb提供程序而不是JET
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;HDR=YES;Database=C:\PB.xlsx',
'SELECT * FROM [Sheet1$]');
答案 2 :(得分:1)
以防其他人像我一样偶然发现这些年,这对我有用:
我们在Windows 8 64位计算机上安装了SQL Server Express 2012,没有安装Office版本。
以下是我设置的存储过程的一部分:
INSERT INTO OPENROWSET ('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=R:\Export Membership Database\Member_Export.xls;',
'SELECT * FROM [combined$]')
(此下面的SELECT语句的其余部分)
我收到了这个错误:
SQL Server阻止访问STATEMENT的'OpenRowset / OpenDatasource' 组件'Ad Hoc Distributed Queries',因为该组件是 作为此服务器的安全配置的一部分关闭。一个 系统管理员可以启用“Ad Hoc Distributed” 使用sp_configure查询。有关启用的更多信息 'Ad Hoc Distributed Queries',搜索'Ad Hoc Distributed Queries' 在SQL Server联机丛书中。
我们更改了配置:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
再次执行存储过程,然后出现此错误:
OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”尚未发布 注册
发现我们需要安装:
之后,像魅力一样工作!