我正在尝试将数据从Excel导入到SQL而不使用向导,因为这是一个需要每周进行的过程,因此自动化是必须的。但是,当我运行以下脚本时,收到一条错误消息:
脚本:
IF OBJECT_ID('TEST Weekly Sales D') IS NOT NULL
DROP TABLE [TEST Weekly Sales D]
SELECT *
INTO [TEST Weekly Sales D]
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=C:\.....\Weekly Sales D.xlsx',
['SHEET1$'])
GO
错误消息:
OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”用于链接服务器“(null)” 返回消息“未指定的错误”。 Msg 7303,Level 16,State 1, 第5行无法初始化OLE DB提供程序的数据源对象 “Microsoft.ACE.OLEDB.12.0”用于链接服务器“(null)”。
服务器上没有excel,但我被告知这不是问题。我安装了ACE OLEDB驱动程序,但它似乎间歇性地工作。
有人可以指出我哪里出错了吗?
答案 0 :(得分:2)
首先检查ACE提供程序是否出现在Management Studio中的ServerObjects> Linked Servers> Providers树下。
然后运行以下命令(单独运行它们以注意是否出现“从0更改为1”信息)。
启用OPENROWSET:
sp_configure 'show advanced options'
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
配置ACE驱动程序:
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
此外,您安装了哪个版本的驱动程序,以及您正在运行哪个SQL Server的Veriosn? x86或64?
此致