【发布时间】:2014-03-09 09:50:57
【问题描述】:
当我尝试将数据从 Excel 导入 SQL Server 中的表时遇到问题我遇到问题我完全被阻止了
我使用的是 Windows 7 64 位 SQL Server 2008 Express。我导入文件格式 (.xls)
代码如下:
SELECT Table_1.Champ1 , Table_1.Champ2
FROM Table_1
INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\Users\AA\Desktop\Classeur1.xls;',
'SELECT [Champ1], [Champ2] FROM [Feuil1$]') T
ON Table_1.Champ1 = T.[Champ1]
这是错误:
消息 7308,第 16 层,状态 1,第 1 行
OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”不能用于分布式查询,因为该提供程序配置为在 STA 模式下运行。
我忘了我也这样做:
我当然把我的查询改成了这个
SELECT Table_1.Champ1 , Table_1.Champ2
FROM Table_1
INNER JOIN OPENROWSET('MICROSOFT.ACE.OLEDB.12.0',
'Excel 8.0;Database=C:\Users\AA\Desktop\Classeur1.xls;',
'SELECT [Champ1], [Champ2] FROM [Feuil1$]') T
ON Table_1.Champ1 = T.[Champ1]
这是错误:
消息 15281,第 16 级,状态 1,第 1 行
SQL Server 阻止了对组件“Ad Hoc Distributed Queries”的 STATEMENT 'OpenRowset / OpenDataSource' 的访问,因为该组件作为服务器安全配置的一部分被关闭。系统管理员可以使用 sp_configure 启用“即席分布式查询”。有关启用“即席分布式查询”的详细信息,请参阅 SQL Server 联机丛书中的“表面区域配置公开”。
使用此代码编辑我的代码后,我在这里找到了它: Get Excel sheet into temp table using a script
在堆栈溢出中
sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
在我执行查询之后
SELECT Table_1.Champ1 , Table_1.Champ2
FROM Table_1
INNER JOIN OPENROWSET('MICROSOFT.ACE.OLEDB.12.0',
'Excel 8.0;Database=C:\Users\AA\Desktop\Classeur1.xls;',
'SELECT [Champ1], [Champ2] FROM [Feuil1$]') T
ON Table_1.Champ1 = T.[Champ1]
错误改成这样:
消息 7302,第 16 级,状态 1,第 1 行
无法为链接服务器“(null)”创建 OLE DB 提供程序“MICROSOFT.ACE.OLEDB.12.0”的实例
请帮忙
【问题讨论】:
-
我搜索了一下,发现有必要下载这个microsoft.com/en-us/download/details.aspx?id=13255,但没有任何相同的问题
-
请参阅本文了解如何在 64 位计算机上使用 Microsoft 数据提供程序。 blog.wharton.com.au/2011/10/19/…
-
我已经高度编辑了我的消息,我第一次忘记这样做了
-
我相信,即使您“正确”配置了 STA/Ad-Hoc Distributed Queries 设置,JET 也不支持任何级别的分布式事务,因此您应该考虑从任何级别删除您的
SELECT查询环境交易 -
我的 objectif 是将我在 sql server 中的表与我的 excel 表中的表加入任何问题,所以我无法删除选择查询:D
标签: sql excel sql-server-2008