0

我正在尝试在不使用向导的情况下将数据从 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

错误信息:

链接服务器“(null)”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”返回消息“未指定错误”。消息 7303,级别 16,状态 1,第 5 行无法为链接服务器“(null)”初始化 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”的数据源对象。

服务器上没有excel,但有人告诉我这不是问题。我安装了 ACE OLEDB 驱动程序,但它似乎间歇性地工作。

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

4

1 回答 1

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?x86 还是 64?

问候

于 2013-01-15T14:38:55.287 回答