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盤,正常。

暈啊暈,這里的地址是指的本地地址,也就是數據庫服務器上的磁盤地址,這個以前真沒太注意啊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM