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

 

轉自:http://www.cnblogs.com/tippoint/archive/2012/05/09/2491496.html 

個人學習收藏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章