使用 SQL Server 2017 Import and Export Data 出現 “Microsoft.ACE.OLEDB.12.0” 或 “Microsoft.ACE.OLEDB.16.0” 的解法

來記錄一下今天在使用 SQL Server 2017 Import and Export Data 匯出資料遇到的問題,為什麼沒有使用 SQL Server 2010 Import and Export Data 呢?因為需要讓它可以匯出 Excel 所以使用 2017 版本沒有使用 2010 版本。

遇到的問題

首先是 Login failed for user ‘admin

遇到這個問題需要先檢查一下

  1. Server name
  2. User name
  3. Password

通常都會是以上這幾個問題導致的

資料超過 65536 筆

如果資料超過 65536 是沒有辦法使用 Microsoft Excel 97-2003 版本的格式的,因為這是 Microsoft Excel 97-2003 版本的最大資料筆數只有 65536 筆

因此如果想要解決這個問題就要使用 xlsx 也就是使用 Microsoft Excel 2007-2010 版本,不過我在使用這個版本的時候遇到 “Microsoft.ACE.OLEDB.12.0″ 提供者並未登錄於本機電腦上” 的問題,遇到這個問題要去補 “Microsoft Access Database Engine 2010 可轉散發套件” 這個套件不過要補 32 位元版本的不然還是會出錯

而如果想要使用 Microsoft Excel 2016 會出現 “Microsoft.ACE.OLEDB.16.0” 而這個版本需要補 “Microsoft Access Database Engine 2016 可轉散發套件” 也是要補 32 位元版本的不然還是會出錯

但是他們直接安裝都會出現 You cannot install the 32-bit version of Microsoft Access database 2010 或是 You cannot install the 32-bit version of Microsoft Access database 2016

而我們其實可以讓他強制安裝如果是要安裝 Microsoft Access Database Engine 2010 版本使用如下

PS C:\WINDOWS\system32>'C:\Users\user\Downloads\AccessDatabaseEngine.exe' /passive

如果是要安裝 Microsoft Access Database Engine 2016 使用如下指令

PS C:\WINDOWS\system32>'C:\Users\user\Downloads\AccessDatabaseEngine.exe' /quiet

安裝完成就可以使用 Microsoft Excel 2007-2010 或是 Microsoft Excel 2016 來匯出資料了