Excel中与Microsoft.ACE.OLEDB.12.0 SQL服务器(Excel into

2019-08-19 15:47发布

我越来越想在SQL Server 2008 R2 64位打开一个Excel文件时出现以下错误:

Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" 
reported an error. The provider did not give any information about the 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)".

我使用下面的查询:

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0; 
HDR=NO; IMEX=1; Database=\\filepath\filename.xlsx', 'SELECT * FROM [Sheet1$]')

有趣的是,DBA可以没有问题运行它。 我已经经历了就跑以下查询:

sp_configure 'Show Advanced Options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO

EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO

运行它的帐户看起来有SA权限。 这可能是造成这个问题?

Answer 1:

你尝试过(作为测试)复制Excel文件到SQL Server的C:\驱动器,并执行针对路径查询?

当你去到服务器上,然后打开资源管理器/运行对话框这个路径会发生什么:\文件路径\ filename.xlsx?

您是否能够执行这个查询:EXEC master..xp_cmdshell“目录‘\文件路径\ filename.xlsx’?

这将帮助你确定它是否是一个网络配股,或者是否帐户使用分布式查询的权限。

我的直觉是,它绝对是一个权利/权限问题,因为DBA可以运行它。



Answer 2:

菲利普说...首先检查xp_cmdshell的执行。 如果它没有运行由于权限问题,那么首先重新配置运行此选项

SP_CONFIGURE 'XP_CMDSHELL',1
GO             
RECONFIGURE

这个运行以下命令启用了ACE驱动程序进程内的功能链接服务器的权限后:

USE [master]
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

现在运行这一系列命令:

sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE

如果遇到错误,则单独运行每个命令。 最后运行运行下面的命令提到导入所有的Excel数据的SQL服务器:

SELECT * INTO TargetTableName FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
                         'Excel 12.0;Database=FilePath\fileName.xlsx;HDR=YES',
                         'SELECT * FROM [sheetName$]')

请记住,在XLS的情况下,你必须使用Jet驱动程序,而ACE的。 同时,也是TargetTableName不能在运行之前此查询现有的。 编码愉快:)



Answer 3:

SQL Server Management Studio中。 在运行命令打开服务窗口,键入services.msc。

搜索SQL Server服务和右键单击它并选择属性。

在登录选项卡,选择系统帐户/或选择域ID,帐号和密码。

一旦它找到你的用户名,然后按OK。

现在,在这两个领域的键入登录的密码。

重新启动,以便如下面图中的新变化所应用的服务。

现在,启动SQL Server Management Studio和尝试,如果仍无法正常工作尝试重新启动系统来运行查询。

或执行查询。

使用[主] 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



Answer 4:

请使用正斜杠,而不是反斜杠

Select * From OPENROWSET('MICROSOFT.ACE.OLEDB.12.0','EXCEL 12.0;DATABASE=//ComputerName/ShareMyLocation/DatabaseSheet.xlsx;IMEX=1','Select * From [SMDH-View2$]')


文章来源: Excel into SQL Server with Microsoft.ACE.OLEDB.12.0