如何查看服務器上安裝了哪些版本的Microsoft.ACE.OLEDB驅動

在做一個把 windows server 2008 上的應用遷移到windows server 2016的項目時,碰到了一個使用了Microsoft.ACE.OLEDB驅動的asp項目,在win 2016上運行始終報錯。

摘錄出來的代碼如下:

<%

Dim xlsConn
set xlsConn = Server.CreateObject("adodb.connection")
'Dim resAs New ADODB.Recordset

Dim sFileName
'sFileName = "1.txt"
sFileName="C:\C\inetpub\wwwroot\asp\1.xlsx"

xlsConn.Open "Provider=Microsoft.ACE.OLEDB.12.0; Persist Security Info=False; Data Source=" & sFileName & "; Extended Properties='Excel 12.0;HDR=Yes'"
'xlsConn.Open "Provider=Microsoft.ACE.OLEDB.16.0; Persist Security Info=False; Data Source=" & sFileName & "; Extended Properties='Excel 12.0;HDR=Yes'"

xlsConn.Close()
set xlsConn = nothing
%>

代碼運行後,始終提示:

ADODB.Connection 錯誤 '800a0e7a' 

未找到提供程序。該程序可能未正確安裝。 

/asp/oledb_test.ASP,行 22 

該服務器上已經安裝了office 2016版本的AccessDatabaseEngine_x64.exe。

由於在舊服務器windows 2008上安裝是的office 2007版本的AccessDatabaseEngine.exe(x86)。一開始懷疑是因爲安裝的是office 2016的原因,導致Windows 2016服務器上的oledb的提供程序已經不是Microsoft.ACE.OLEDB.12.0,而是Microsoft.ACE.OLEDB.16.0了。

後來發現,安裝了 office 2016版本的AccessDatabaseEngine_x64.exe後,服務器上會同時存在兩個oledb的驅動提供程序:

Microsoft.ACE.OLEDB.12.0和Microsoft.ACE.OLEDB.16.0。

如下截圖:

(安裝了Microsoft Access database engine 2016 x64)

(服務器上的oledb的驅動提供程序)

也就是說,安裝了office 2016版本的 MADE 後,“Microsoft.ACE.OLEDB.12.0”提供程序仍然是可以使用的。

繼續查找原因,發現在舊服務器windows 2008上,該 asp 程序使用的應用程序池裏“啓用32位應用程序”的值是“True”,而且在舊服務器windows 2008上安裝的 office 2007版本的 MADE 是x86的。

在新服務器Windows 2016上安裝的office 2016版本的 MADE 是64位的,而應用程序池裏“啓用32位應用程序”的值仍然被設置爲“True”。所以就導致程序一直報錯:“未找到提供程序”。

修正方式:

將應用程序池的“啓用32位應用程序”的值設置爲“False”。

下面是在服務器上檢查安裝了哪些oledb 驅動的提供程序的方法:

1. 在桌面上建立一個空白的文本文件;

2.修改該文件的文件名爲 1.udl;

3.鼠標雙擊1.udl;

在彈出來的界面上可以看到“提供程序”。點擊“提供程序”可以看到oledb驅動的提供程序的列表。

設置完成後,使用記事本打開1.udl,可以看到數據庫連接的代碼。

以下爲使用office 2016的oledb 驅動提供程序讀取 excel 數據的數據庫連接字符串:

[oledb]
; Everything after this line is an OLE DB initstring
Provider=Microsoft.ACE.OLEDB.16.0;Data Source=C:\C\inetpub\wwwroot\asp\1.xlsx;Extended Properties="Excel 12.0;HDR=Yes";Persist Security Info=False

 

發佈了10 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章