程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL SERVER 2008 64位系統無法導入ACCESS/EXCEL怎麼辦

SQL SERVER 2008 64位系統無法導入ACCESS/EXCEL怎麼辦

編輯:關於SqlServer

操作系統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

以上內容僅是我的個人見解,相信解決辦法不止以上所述,希望大家多多分享自己的意見,共同交流學習進步。希望本文關於SQL SERVER 2008 64位系統無法導入ACCESS/EXCEL的解決方案對大家有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved