将数据从Excel导入SQL Server时出现错误消息

时间:2013-01-15 13:58:57

标签: sql-server oledb

我正在尝试将数据从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驱动程序,但它似乎间歇性地工作。

有人可以指出我哪里出错了吗?

1 个答案:

答案 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?

此致