问题OLE DB提供程序

时间:2014-03-09 09:50:57

标签: sql excel sql-server-2008

当我尝试将数据从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]

这是错误:

  

Msg 7308,Level 16,State 1,Line 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]

这是错误:

  

Msg 15281,Level 16,State 1,Line 1
  SQL Server阻止访问组件“Ad Hoc Distributed Queries”的STATEMENT“OpenRowset / OpenDataSource”,因为该组件作为服务器安全配置的一部分被关闭。系统管理员可以使用sp_configure启用“Ad Hoc Distributed Queries”。有关启用“Ad Hoc Distributed Queries”的详细信息,请参阅联机丛书中的“Surface Server配置曝光”。

使用此代码编辑代码后,我在此处找到了它: Get Excel sheet into temp table using a script

stackoverflow中的

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]

错误更改为:

  

Msg 7302,Level 16,State 1,Line 1
  无法为链接服务器创建OLE DB提供程序“MICROSOFT.ACE.OLEDB.12.0”的实例“(null)”

请帮助

1 个答案:

答案 0 :(得分:-2)

右键单击您的OLEDB Providor并转到“属性”并选中“允许进行中”