終於解決SQL Server 2008 64位系統無法導入Access/Excel的問題 2012/08/01


最近更換了新服務器,操作系統Windows Server 2008 X64,數據庫SQL Server 2008 X64,Office 2007(好像只有32位),在存儲過程執行OpenDatasource導入Access數據的時候遇到問題了,Oledb 4.0已經不被支持,以下是遇到的若干錯誤提示:

 

 

因為 OLE DB 訪問接口 'Microsoft.Jet.OLEDB.4.0' 配置為在單線程單元模式下運行,所以該訪問接口無法用於分布式查詢。
無法創建鏈接服務器 "(null)" 的 OLE DB 訪問接口 "Microsoft.Ace.OLEDB.12.0" 的實例。
因為 OLE DB 訪問接口 'Microsoft.Ace.OLEDB.12.0' 配置為在單線程單元模式下運行,所以該訪問接口無法用於分布式查詢 。

 

解決方案是安裝Office 2010 64位版, 網上有很多下載,然后下載Microsoft Access Database Engine 2010 的X64版本,網上也有下載,兩者缺一不可。

 

然后改一下OpenDatasource參數,將 Microsoft.Jet.OLEDB.4.0 改為 Microsoft.ACE.OLEDB.12.0,大功告成。

 

貼上存儲過程部分代碼:

 

 

     -- 開啟導入功能
     exec sp_configure  ' show advanced options ', 1
     reconfigure
     exec sp_configure  ' Ad Hoc Distributed Queries ', 1
     reconfigure
     -- 允許在進程中使用ACE.OLEDB.12
     EXEC master.dbo.sp_MSset_oledb_prop N ' Microsoft.ACE.OLEDB.12.0 ', N ' AllowInProcess '1
     -- 允許動態參數
     EXEC master.dbo.sp_MSset_oledb_prop N ' Microsoft.ACE.OLEDB.12.0 ', N ' DynamicParameters '1
    
     -- 導入臨時表 
     exec ( ' insert into jihua(id,[批次號],Right( ''' +  @filepath  + ''' ,charindex( '' \ '' ,REVERSE( ''' +  @filepath  + ''' ))-1),getdate() FROM OPENDATASOURCE ( '' Microsoft.ACE.OLEDB.12.0 '' '' Data Source= ' + @filepath + ' ;User ID=Admin;Password= ''  )...計划匯總表 ')

     -- 注意這里,要先關閉外圍的設置,然后再關閉高級選項
     exec sp_configure ' Ad Hoc Distributed Queries ', 0
     reconfigure
     exec sp_configure ' show advanced options ', 0
     reconfigure
     -- 關閉ACE.OLEDB.12的選項
     EXEC master.dbo.sp_MSset_oledb_prop N ' Microsoft.ACE.OLEDB.12.0 ', N ' AllowInProcess '0
     EXEC master.dbo.sp_MSset_oledb_prop N ' Microsoft.ACE.OLEDB.12.0 ', N ' DynamicParameters '0

 

 

 


免責聲明!

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



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