无法初始化OLE DB提供程序

时间:2017-07-06 14:49:28

标签: sql sql-server excel oledb linked-server

尝试从Excel(xls)文件中选择数据时,在SQL Server 2008中出现以下错误:

Msg 7303, Level 16, State 1, Line 43
Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server

SQL如下:

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;HDR=YES;Database=c:\\Temp\\Book1.xls;', 'SELECT * FROM [Sheet1$]')

采取的步骤:

  1. 安装了Access数据库引擎。 'Microsoft.ACE.OLEDB.12.0' 显示在服务器对象>链接服务器>提供商
  2. 确保选中“动态参数”和“允许进行中”
  3. 确保Excel文件已关闭
  4. 确保启用了“ad hoc分布式查询”(1)
  5. 确保运行SQL服务的用户具有c:\ temp \ folder
  6. 的权限

    我的理论: 在我的开发盒上运行正常,因为我的SQL服务作为'LocalSystem'运行。我正在尝试运行的目标服务器有一个正在运行的特定网络用户。这不能改变。

    根据我所知道/已经阅读过的关于OPENROWSET和OPENQUERY(也尝试使用链接服务器),它需要在C:\ Windows \ ServiceProfiles \\ AppData \ Local \ Temp中创建一个临时文件。我已手动尝试在服务配置文件中为此用户创建文件夹结构,但这也不起作用。

    ::更新:: 最后,我放弃了这个想法,而是在集成服务中创建了一个包。由于这个过程需要作为工作的一部分运行,这足以满足我的需求。

    如果有人有兴趣。在IS中创建包就像遵循导入数据向导一样简单,最后选择“创建集成服务包”。然后可以从您的工作中调用它。 TA

0 个答案:

没有答案