【发布时间】:2018-03-16 21:35:27
【问题描述】:
这是我们的情况:
我们有:
- SI = 64 位 Windows Server 2008 R2 标准版
- DB = SQL Server 2008 R2
此服务器上未安装 Microsoft Office 软件包(我们无法打开 .xls、.ppt、.doc 等)
我们尝试使用向导导入 Excel 97-2003 文件,一切正常!
问题是:我们需要执行一个带有一些控件的查询,将 Excel 文件中的数据导入我们的数据库。
SELECT *
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\file.xls', 'SELECT * FROM [Clienti$]')
但我们得到以下错误:
消息 7308,第 16 层,状态 1,第 1 行
OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”不能用于分布式查询,因为该提供程序配置为在单线程单元模式下运行。
我们已经在guide之后配置了一些选项
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
【问题讨论】:
-
你为什么不使用 SSIS 来代替?这是加载和转换数据的最简单方法。这就是向导使用的。您甚至可以保存向导生成的包并对其进行编辑。这将为您提供比对单个文件运行查询更多的控制权。例如,您可以使用 File 迭代器容器将所有
.xls文件加载到特定文件夹中,然后将它们移动到存档文件夹。
标签: sql-server excel sql-server-2008-r2