1. 程式人生 > >win7(64位)Sql server 用T-sql讀取本地資料檔案dbf的資料檔案

win7(64位)Sql server 用T-sql讀取本地資料檔案dbf的資料檔案

原文地址:https://www.cnblogs.com/cl1006/p/9924066.html

第一步啟用Ad Hoc Distributed Queries  SQLserver執行以下的語句:

exec sp_configure 'show advanced options',1

reconfigure

exec sp_configure 'Ad Hoc Distributed Queries',1

reconfigure

----允許在程序中使用ACE.OLEDB.12   在安裝了 ACE2010的驅動才可以執行下面語句。

 EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1

 

 

第二步 到資料庫執行下面的查詢語句

select *  from   OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source="E:\廣州市\GZYJ\GZYJJK\GZYJJK\bin\Debug\DllG\data";Extended properties=dBase 5.0')...bs_factory

會報一個錯誤: 
訊息 7308,級別 16,狀態 1,第 3 行
因為 OLE DB 訪問介面 'MICROSOFT.JET.OLEDB.4.0' 配置為在單執行緒單元模式下執行,所以該訪問介面無法用於分散式查詢。

是由於Windows64 位作業系統裡面沒有 ACE2010的驅動,64位的驅動

下載一個64位的驅動   ACE2010的驅動,64位的。 進行安裝 ,但是這個驅動必須在office 64 位的環境才能正常安裝。

安裝前是要將系統中32 office 軟體解除安裝掉 並且刪除對應的 註冊檔案,然後重新安裝一個office 64 位和ACE2010的驅動,64位的驅動

解除安裝office32 位後,開啟 登錄檔進行刪除

在開啟的執行視窗中,輸入命令regedit,然後點選確定按鈕。

 找到office登錄檔資訊,路徑如下:(win10環境下)

"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office“

此外,也可通過在“編輯”工具欄下“查詢”(快捷鍵:Ctrl+F),輸入”office“在全字匹配”條件下進行查詢。具體如圖:

 

如有,找到“office”登錄檔項後,右擊“刪除”選項,刪除原office殘留登錄檔資訊。

在開啟的登錄檔編輯器視窗中,定位到HKEY_CLASSES_ROOT\Installer\Products登錄檔項。

 在展開的登錄檔項中,我們找到以00002開頭的登錄檔項,右鍵點選該項,在彈出選單中選擇“刪除”選單項。

 

 這時會彈出一個確認項刪除的視窗,點選“是”按鈕即可。另外我們再刪除所有以000051開頭的登錄檔項,重新啟動計算機後,再安裝64位的Office就不會提示錯誤 了。

 

將這些刪除乾淨後再 重新安裝 office 2010 64位的

再安裝相應的  ACE2010的驅動,64位的   。

執行一下語句 

select *  from

OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0','Data Source="E:\DllG\data";Extended properties=dBase 5.0')...bs_reg

既可以查詢到資料。