尝试在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
运行它的帐户看起来好像有访问权限。可能导致这个问题的原因是什么?
答案 0 :(得分:4)
您是否尝试过(作为测试)将Excel文件复制到SQL Server C:\驱动器并对该路径执行查询?
当您进入服务器并在资源管理器/运行对话框中打开此路径时会发生什么: \ filepath \ filename.xlsx ?
您是否能够执行此查询: exec master..xp_cmdshell'dir'\ filepath \ filename.xlsx'?
这将帮助您确定它是否是网络权利问题,或者该帐户是否具有使用分布式查询的权限。
我的预感是,它肯定是权利/许可问题,因为DBA可以运行它。
答案 1 :(得分:4)
正如菲利普所说......首先检查xp_cmdshell的执行情况。如果由于权限问题而未运行,则首先通过运行
重新配置此选项SP_CONFIGURE 'XP_CMDSHELL',1
GO
RECONFIGURE
在此运行以下命令之后,为ACE驱动程序的InProcess功能启用链接服务器权限:
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 Driver而不是ACE。并且在运行此查询之前,TargetTableName也不能存在。 快乐的编码:)
答案 2 :(得分:0)
SQL Server Management Studio。在run命令中键入Services.msc以打开服务窗口。
搜索SQL Server服务并右键单击它并选择属性。
在“登录”选项卡中,选择系统帐户/或选择您的域名ID和帐户和密码。
找到您的登录名后,按OK。
现在在两个字段中输入您的登录密码。
重新启动服务,以便应用新的更改,如下图所示。
现在启动SQL Server Management Studio并尝试运行查询,如果仍然无法运行,请尝试重新启动系统。
或执行查询。
USE [master] GO EXEC master.dbo.sp_MSset_oledb_prop N' Microsoft.ACE.OLEDB.12.0',N' AllowInProcess',1 走 EXEC master.dbo.sp_MSset_oledb_prop N' Microsoft.ACE.OLEDB.12.0',N' DynamicParameters',1 GO
答案 3 :(得分:0)
请使用正斜杠而不是反斜杠
Select * From OPENROWSET('MICROSOFT.ACE.OLEDB.12.0','EXCEL 12.0;DATABASE=//ComputerName/ShareMyLocation/DatabaseSheet.xlsx;IMEX=1','Select * From [SMDH-View2$]')