Cách khắc phục lỗi 'Microsoft.ACE.OLEDB.12.0 provider is not registered'

intermediate📊 Microsoft Excel2026-04-18| Windows 10/11, .NET 6/8, .NET Framework 4.8, SQL Server 2019/2022, IIS 10, Office 365.

Error Message

The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.
#excel#oledb#ket-noi-co-so-du-lieu#dotnet#iis

Hiểu về lỗi này

Bạn thường sẽ gặp lỗi này khi một ứng dụng .NET, một dịch vụ web trên IIS hoặc SQL Server Import and Export Wizard cố gắng đọc tệp Excel (.xlsx) hoặc Access (.accdb). Hệ thống sẽ tìm kiếm driver OLEDB để làm cầu nối giao tiếp. Nếu cầu nối đó bị thiếu hoặc không khớp về kiến trúc, kết nối sẽ thất bại ngay lập tức.

Hai nguyên nhân chính

Hầu hết các lỗi kết nối bắt nguồn từ hai vấn đề cụ thể. Đầu tiên, Microsoft Access Database Engine có thể chưa được cài đặt hoàn toàn. Thứ hai, và cũng phổ biến hơn nhiều, là sự không đồng nhất về kiến trúc (bitness mismatch). Nếu ứng dụng của bạn chạy dưới dạng quy trình 64-bit nhưng bạn chỉ cài đặt driver 32-bit, ứng dụng sẽ không thể "nhìn thấy" provider, ngay cả khi nó đã tồn tại trên ổ cứng.

Bước 1: Cài đặt Database Engine chính xác

Đừng giả định rằng việc cài đặt Microsoft Office có nghĩa là bạn đã có các OLEDB provider cần thiết. Các bản cài đặt Office thường thiếu các thành phần redistributable mà phần mềm bên thứ ba yêu cầu. Để khắc phục, hãy tải xuống Microsoft Access Database Engine 2016 Redistributable.

  • Xác định kiến trúc ứng dụng của bạn: Bạn phải khớp driver với ứng dụng, không phải với phiên bản Windows.
  • Nếu ứng dụng của bạn là 32-bit, hãy tải xuống accessdatabaseengine.exe (khoảng 75 MB).
  • Nếu ứng dụng của bạn là 64-bit, hãy tải xuống accessdatabaseengine_X64.exe (khoảng 79 MB).

Bước 2: Giải quyết xung đột kiến trúc

Đây là trở ngại thường gặp nhất đối với các lập trình viên. Giả sử bạn có Office 32-bit trên máy Windows 64-bit. Nếu bạn xây dựng một ứng dụng .NET nhắm mục tiêu là "Any CPU", runtime sẽ mặc định là 64-bit. Sau đó, nó sẽ tìm kiếm trong registry 64-bit một driver chỉ tồn tại trong nhánh 32-bit.

Cấu hình cho Visual Studio:

Buộc dự án của bạn nhắm mục tiêu vào kiến trúc cụ thể của driver đã cài đặt:

  • Nhấp chuột phải vào dự án trong Solution Explorer và chọn Properties.
  • Chuyển đến tab Build.
  • Tìm menu thả xuống Platform target.
  • Chuyển từ Any CPU sang x86 (cho driver 32-bit) hoặc x64 (cho driver 64-bit).
  • Build lại giải pháp của bạn và kiểm tra kết nối.

Cấu hình cho ứng dụng web IIS:

Các ứng dụng web thường thất bại vì IIS Application Pools chạy ở chế độ 64-bit theo mặc định. Nếu bạn đang sử dụng driver 32-bit, bạn phải điều chỉnh cài đặt pool:

  • Mở IIS Manager và nhấp vào Application Pools.
  • Tìm pool đang chạy ứng dụng của bạn và chọn Advanced Settings.
  • Tìm mục Enable 32-Bit Applications và chuyển thành True.

Bước 3: Những lưu ý với SQL Server và SSMS

Khi sử dụng SQL Server Import and Export Wizard, hãy nhớ rằng SQL Server Management Studio (SSMS) là một ứng dụng 32-bit. Ngay cả trên một máy chủ 64-bit mạnh mẽ, wizard tiêu chuẩn có thể không tìm thấy ACE provider 64-bit. Luôn tìm kiếm SQL Server Import and Export Wizard (64-bit) trong Start Menu nếu bạn đang làm việc với các driver 64-bit.

Cách kiểm tra các Provider đã đăng ký

Đừng đoán xem liệu driver đã được đăng ký chính xác hay chưa. Bạn có thể truy vấn trực tiếp hệ điều hành bằng PowerShell để xem chính xác những gì có sẵn trong môi trường của bạn. Chạy lệnh sau:

(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION | Where-Object { $_.SOURCES_NAME -like "*ACE.OLEDB*" }

Nếu kết quả trống, có nghĩa là driver bị thiếu hoặc bạn đang chạy phiên bản PowerShell 64-bit trong khi chỉ có driver 32-bit được cài đặt.

Chuỗi kết nối tiêu chuẩn

Một chuỗi kết nối được định dạng đúng là rất quan trọng. Đối với các tệp Excel hiện đại (.xlsx), hãy sử dụng cấu trúc sau:

string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Data\Sales.xlsx;Extended Properties='Excel 12.0 Xml;HDR=YES;'";

Mẹo chuyên sâu cho môi trường Production

  • Vệ sinh máy chủ: Đừng bao giờ cài đặt bộ Office đầy đủ trên máy chủ production. Nó làm tăng bề mặt tấn công và gây ra các gánh nặng không cần thiết. Chỉ sử dụng Redistributable Engine.
  • Cài đặt bắt buộc: Nếu bộ cài đặt 64-bit chặn bạn vì đã có Office 32-bit, hãy chạy bộ cài đặt qua dòng lệnh với cờ /quiet để bỏ qua bước kiểm tra.
  • Nâng cấp phiên bản: Mặc dù ACE.OLEDB.12.0 là tiêu chuẩn, việc nâng cấp lên Microsoft.ACE.OLEDB.16.0 (từ bản redistributable 2016) thường giải quyết được các vấn đề về độ ổn định với các tệp Excel lớn vượt quá 50MB.

Related Error Notes