OLE DB 访问接口 'Microsoft.Jet.OLEDB.4.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询

  遇到了一个问题,从excel导入数据到sql2005,之前操作过很多次,这次遇到了一些新情况。

  使用的语句如下:

  select * from OpenRowSet
         ('Microsoft.Jet.OLEDB.4.0',
          'Excel 8.0;HDR=Yes;IMEX=1;Database=E:\bb.xls',
           [Sheet1$]
          )
 结果提示错误:因为 OLE DB 访问接口 'Microsoft.Jet.OLEDB.4.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询。

  查了很多资料一般都是客户端和服务器端都是64位系统的情况。

 我这边的情况,客户端使用的是32位的xp系统,服务器sql2005是64位的系统,和很多查到的情况不一样。

 后来我在服务器上安装了ACE2010的驱动,64位的。

http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=c06b8369-60dd-4b64-a44b-84b371ede16d

修改了代码

 select * from OpenRowSet
         ('Microsoft.ACE.OLEDB.12.0',
          'Excel 8.0;HDR=Yes;IMEX=1;Database=E:\bb.xls',
           [Sheet1$]
          )
但是还是出错,提示信息如下:

无法从链接服务器 "(null)" 的 OLE DB 访问接口"Microsoft.ACE.OLEDB.12.0"获取列信息。

 

后来看到一个文章说执行以上sql语句的数据库必须是本地数据库,如果为远程的数据库就会报上面的错误。

我尝试在本地的32位系统上的数据库操作,一切正常

然后我又在服务器上上传了excel文件,在服务器上执行语句,一切正常。

然后又在本地执行相同的语句,注意这里的e盘的bb的excel是指的服务器上的e盘,正常。

晕啊晕,这里的地址是指的本地地址,也就是数据库服务器上的磁盘地址,这个以前真没太注意啊。

 

 

posted @   天生我豺  阅读(29539)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示