OPENROWSET与Excel文件

时间:2012-03-13 16:02:13

标签: sql-server sql-server-2008 excel oledb openrowset

我想执行简单的声明:

SELECT * FROM 
OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Text;Database=C:\Temp\;','SELECT * FROM [test.csv]')

突然间,我今天早上收到了这条消息:

Msg 7308, Level 16, State 1, Line 1
OLE DB provider 'MICROSOFT.JET.OLEDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.

它一直工作到今天早上!

这是我的服务器规格: Windows 2008 R2 64位 SQL Server 2008 64位

我已经安装了AccessDatabaseEngine_x64.exe。

Sql Server在LocalService帐户下运行。 我已将Everyone设置为对“C:\ Temp”以及“C:\ Windows \ ServiceProfiles \ LocalService \ AppData \ Local”具有FullControl权限。

我错过了什么吗?我真的很困惑......

编辑: 我也执行了这些陈述:

sp_configure ‘show advanced options’, 1;
 GO
 RECONFIGURE;
 GO
 sp_configure ‘Ad Hoc Distributed Queries’, 1;
 GO
 RECONFIGURE;
 GO

EXEC master.dbo.sp_MSset_oledb_prop N’Microsoft.ACE.OLEDB.12.0′, N’AllowInProcess’, 1
 GO
 EXEC master.dbo.sp_MSset_oledb_prop N’Microsoft.ACE.OLEDB.12.0′, N’DynamicParameters’, 1
 GO

我还使用管理员帐户测试了ACE.OLEDB.12.0

SELECT * FROM  
OPENROWSET('MICROSOFT.ACE.OLEDB.12.0','Text;Database=C:\Temp\;','SELECT * FROM [test.csv]')

还有另一个错误:

OLE DB provider "MICROSOFT.ACE.OLEDB.12.0" for linked server "(null)" returned message "Unspecified error".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "MICROSOFT.ACE.OLEDB.12.0" for linked server "(null)".

最后我找到了: 我运行ProcMon,我看到Sql Server想要访问F:\ Windows Temp \,文件夹不存在!我创建了文件夹,问题解决了。但是,我从来没有这样的文件夹!!!

1 个答案:

答案 0 :(得分:3)

最后我发现了它:我运行了ProcMon,我发现SQL Server想要访问F:\Windows Temp\并且该文件夹不存在!我创建了文件夹,问题解决了。但是,我从来没有这样的文件夹!!!