Nhà cung cấp 'Microsoft.ACE.OLEDB.12.0' chưa được đăng ký trên máy cục bộ


442

Tôi đang cố gắng lấy dữ liệu từ một tệp Excel trong một sự kiện nhấn nút. Chuỗi kết nối của tôi là:

 string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\source\\SiteCore65\\Individual-Data.xls;Extended Properties=Excel 8.0;";

Khi tôi nhấp vào nút, tôi đã gặp lỗi sau:

Nhà cung cấp 'Microsoft.ACE.OLEDB.12.0' không được đăng ký trên máy cục bộ.

Tôi không có manh mối làm thế nào để khắc phục điều này. Hệ điều hành của tôi là Windows 7.


5
Chỉ là một nhận xét tiếp tuyến: sử dụng OLEDB để đọc tệp Excel là công nghệ cổ đại, rất chậm và như bạn đã phát hiện ra, yêu cầu cài đặt các gói bổ sung thủ công trên máy mục tiêu của bạn. (Được cấp, câu hỏi đã được hỏi vào năm 2011) Thay vì sử dụng closXml (có sẵn trên NuGet) hoạt động ngay lập tức.
Shaul Behr

3
@ShaulBehr Sẽ rất tuyệt, nhưng CloseXml chỉ hoạt động đối với các tệp .xlsx, không phải .xls
Jimmy

2
Nếu bạn đang nhập vào Sql Server, bạn có thể chạy truy vấn này từ ssms: exec master.dbo.xp_enum_oledb_providers Nó sẽ cho bạn biết nhà cung cấp mà bạn nghĩ bạn có. Nó cũ tôi đã có cả Microsoft.ACE.OLEDB.16.0 và Microsoft.ACE.OLEDB.12.0, nhưng khi tôi cố gắng nhập dữ liệu, tôi đã nhận được 'không đăng ký trên máy cục bộ của bạn' như OP, cho cả Excel 16 và định dạng tệp Excel 2007 (tương ứng oledb.16.0 và oledb.12.0). Tại thời điểm này, việc cắt lỗ của bạn và từ bỏ phần mềm Microsoft là điều hợp lý.
dùng1040323

1
@ user1040323, execute master.dbo.xp_enum_oledb_providerscho bạn biết những gì trên máy chủ không có trên Máy cục bộ của bạn .
Nathan Goings

1
Đây là một trong những nên làm việc; - Đó là: Không thực sự được ghi lại, nhưng tôi đã tìm cách cài đặt cả phiên bản 32 bit và 64 bit. Chỉ cần thêm đối số dòng lệnh "/ passive" vào lệnh: "Đường dẫn thư mục C: \ \ AccessDatabaseEngine_x64.exe" / passive
TaW

Câu trả lời:


532

Vâng, bạn cần phải cài đặt nó. Bạn đang tìm:


44
Tôi đã tải xuống các thành phần này và chúng không hoạt động với tôi, tôi phải tải xuống Microsoft Access Database Engine 2010 Redistributable từ đây: microsoft.com/en-in/doad/details.aspx?id=13255 Tôi chắc chắn rằng vì tôi Tôi đang sử dụng MS Office 2013. Cảm ơn bạn đã chỉ cho tôi đi đúng hướng.
Sizons

5
Tôi đã phải cài đặt công cụ cơ sở dữ liệu truy cập và Trình điều khiển hệ thống Office 2007: Các thành phần kết nối dữ liệu tại đây microsoft.com/en-us/doad/confirmation.aspx?id=23734 để làm cho nó hoạt động.
Chris

6
Tình hình của tôi, mọi thứ đều hoạt động tốt, rồi đột nhiên nó bắt đầu gặp lỗi này. Vậy điều gì có thể xảy ra để gây ra điều này? Không có mã thay đổi.
eetawil

21
Trong trường hợp của tôi, tôi đã phải chuyển từ "Bất kỳ CPU" sang x64 để phù hợp với kiến ​​trúc của mình.
Rob Sedgwick

2
Jack the Ripper đề cập đến giải pháp được cung cấp trong chính câu trả lời, không phải các bình luận. Cài đặt 2007 Office System Driver: Data Connectivity Componentsgiải quyết vấn đề ngay lập tức.
tằm lửa

156

Phiên bản 64 bit của 'Microsoft Access Database Engine 2010 Redistributable' sẽ cho phép bạn sử dụng nhà cung cấp 'Microsoft.ACE.OLEDB.12.0' có sẵn tại đây:
http://www.microsoft.com/en-us/ tải về / chi tiết.aspx? id = 13255

Nếu bạn sử dụng tải xuống từ câu trả lời được chấp nhận, bạn sẽ cần xây dựng cho x86, như được chỉ ra bởi @ backtestbroker.com.


18
Nếu sử dụng VS 2012, hãy chắc chắn rằng hộp kiểm "Thích 32 bit" không được chọn trong Thuộc tính của dự án >> Xây dựng >> Cấu hình chung.
devstruck

3
Tôi đang sử dụng VS 2008 (không hỏi) và giải pháp này không hoạt động cho đến khi tôi đọc mẹo của post_erasmus và đặt 'Target Target' thành x64 trong Thuộc tính >> Xây dựng >> Cấu hình chung cho ứng dụng của tôi. Sắp xếp, cảm ơn!
Tài nguyên

1
Liên kết trong câu trả lời này cũng cho phép bạn tải xuống và cài đặt phiên bản 32 bit. Mặc dù tôi có Windows 7 64 bit, IIS Express của Visual Studio 2013 chạy ở chế độ 32 bit theo mặc định và tôi đã có một số thành phần Office 2013 được cài đặt trong 32 bit, vì vậy cài đặt 32 bit là thứ tôi cần.
Eric Barr

1
Với câu trả lời này, tôi cũng phải đặt "Bật ứng dụng 32 bit" trên Nhóm ứng dụng thành Sai.
iowatiger08

1
Điều này đã giúp giải quyết vấn đề của tôi. Ứng dụng VS 2019 của tôi được biên dịch bằng bất kỳ CPU nào dẫn đến thư viện x64. Tôi đã cài đặt phiên bản Office 2013 32 bit khiến tôi không thể cài đặt x64 Access DB Engine. Sau khi cài đặt phiên bản x64 của Office, tôi đã có thể cài đặt công cụ x64 và bây giờ mọi thứ đều hoạt động. DLL địa ngục sống trên.
Mike Lowery

74

tùy thuộc vào ứng dụng (32 / 64bit) bằng kết nối bạn có thể chỉ cần cài đặt

Tóm lược:

  • tất cả các văn phòng từ 2007-2016 đều chứa nhà cung cấp "Microsoft.ACE.Oledb.12.0"
  • tùy thuộc vào kiến ​​trúc ứng dụng của bạn, chọn công cụ thời gian chạy phù hợp (32/64) 6
  • kiểm tra các nhà cung cấp của bạn bằng lệnh powershell từ cả vỏ 32 và 64 bit :

    (New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 
  • và bạn sẽ thấy nhà cung cấp nào hệ thống của bạn có thể sử dụng

câu chuyện dài: các chuỗi có thể được tìm thấy với http://live.sysiternals.com/strings.exe

ví dụ. trên Hệ thống 64 bit với trình điều khiển 32 bit được cài đặt

strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE12\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\MSO.DLL" | findstr "ACE.O"

ngay cả trong văn phòng sắp tới 2016

c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\MSO.DLL
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\MSO.DLL

bạn sẽ tìm thấy các chuỗi

  • Microsoft.ACE.OLEDB

  • Microsoft.ACE.Oledb.12.0

Office 2013 cũng đi kèm với csi.dll

c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\Csi.dll
c:\Program Files\Common Files\Microsoft Shared\OFFICE15\Csi.dll

có chứa " Microsoft.ACE.OLEDB.15.0 "

và Văn phòng 2016

c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\Csi.dll
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\Csi.dll

có phiên bản " Microsoft.ACE.OLEDB.16.0 "


Tôi đã gặp lỗi này trong VS2015 khi sử dụng Nuget LinqToExcel. Hóa ra, vì tôi đã cài đặt x64 ACE, tôi phải xây dựng rõ ràng cho x64 (Trình quản lý cấu hình), thay vì nhắm mục tiêu bất kỳ CPU nào.
subsci

Powershell cho thấy "Microsoft.ACE.Oledb.12.0" đã được cài đặt. Tuy nhiên, việc cài đặt gói Access 2007 (còn gọi là Trình điều khiển hệ thống Office 2007: Các thành phần kết nối dữ liệu ) đã giúp tôi tiếp tục. Đã có trên hệ thống của tôi: Office 2016 Ent, Visual Studio 2017 Ent
SushiGuy

6
Kịch bản PowerShell thông báo phiên bản nào được cài đặt là thiên tài! Cảm ơn bạn @Bernhard
Rob Bowman

bit offtopic nhưng quyền hạn đơn giản này là dành cho trình điều khiển ODBC của bạn:Get-OdbcDriver | select Name,Platform
Bernhard

Điều này đã giải quyết vấn đề cho tôi trên máy chủ 64 bit bằng cách tải xuống thời gian chạy 32-BIT Access 2016. Về cơ bản bắt đầu với 32 bit để ở bên an toàn (điều tồi tệ xảy ra khi bạn cố gắng chuyển mọi thứ sang 64 bit trong dự án).
Eric Mutta

45

Điều đầu tiên bạn cần kiểm tra là cấu hình xây dựng ứng dụng của bạn.

  • Nếu bạn đã xây dựng dự án của mình dưới nền tảng x86 , thì để giải quyết vấn đề, bạn nên cài đặt các gói sau trên máy của mình:

    1. Để sử dụng nhà cung cấp 'Microsoft.ACE.OLEDB.12.0', bạn phải cài đặt Microsoft Access Database Engine 2010 Redistributable trước, cài đặt này có sẵn tại: http://www.microsoft.com/doad/en/details.aspx ? id = 13255 .

      Sau khi cài đặt hoàn tất, hãy thử chạy ứng dụng của bạn, nếu điều này giải quyết được vấn đề lớn, nếu không, hãy tiếp tục bước 2.

    2. Bước tiếp theo này là một cách giải quyết không giải thích được, hoạt động cho Office 2010, mặc dù đó là Thành phần kết nối dữ liệu của Office 2007. Tôi không chắc tại sao nó hoạt động, nhưng nó đã được chứng minh là hoạt động trong hầu hết các trường hợp. Bạn cần cài đặt Trình điều khiển hệ thống Office 2007: Các thành phần kết nối dữ liệu , cài đặt này có sẵn tại: http://www.microsoft.com/doad/en/confirmation.aspx?id=23734 .

      Sau khi cài đặt này hoàn tất, hãy thử chạy ứng dụng của bạn, điều này sẽ giải quyết vấn đề.

  • Nếu bạn đang cố chạy một ứng dụng được xây dựng dưới nền tảng x64 hoặc AnyCPU , trước tiên tôi khuyên bạn nên xác thực rằng nó chạy như mong đợi trong nền tảng x86. Trong trường hợp nó không chạy dưới nền tảng x86 đó, hãy thực hiện các bước trong phần đầu tiên và xác thực rằng nó chạy như mong đợi.

    Tôi đã đọc rằng các trình điều khiển MS Access bao gồm trình điều khiển Cơ sở dữ liệu OLEDB chỉ hoạt động trong nền tảng x86 và không tương thích với nền tảng x64 hoặc AnyCPU. Nhưng điều này dường như là không đúng sự thật. Tôi đã xác thực ứng dụng của mình đang chạy khi xây dựng x86, sau đó tôi đã cài đặt Công cụ cơ sở dữ liệu truy cập bằng cờ thụ động.

    1. Trước tiên hãy tải xuống tệp cục bộ Bạn có thể tải xuống bản cài đặt tại đây: http://www.microsoft.com/en-us/doad/details.aspx?id=13255
    2. Cài đặt bằng dấu nhắc lệnh với cờ '/ thụ động'. Trong dấu nhắc lệnh chạy lệnh sau: 'AccessDatabaseEngine_x64.exe / passive'

    Sau 2 bước này, tôi đã quản lý để chạy ứng dụng của mình sau khi xây dựng cấu hình xây dựng x64 hoặc AnyCPU. Điều này xuất hiện để giải quyết vấn đề của tôi.

Lưu ý: Thứ tự của các bước dường như tạo ra sự khác biệt, vì vậy hãy làm theo.


5
Tôi gặp vấn đề là tôi đã chuyển từ ứng dụng 32 bit sang 64 bit và nó không chạy nữa. Phần thứ hai của hướng dẫn của bạn hoạt động hoàn hảo! Các / thụ động cờ cho phép cài đặt ngay cả với một 32bit Microsoft Office.
Freddy

1
Mẹo: Trích xuất AccessDatabaseEngine_x64.exe vào một thư mục để lấy các tệp AceRedist.msi và Data.cab. Mở dấu nhắc cmd trong chế độ Quản trị viên và thực hiện AceRedist.msi /passive.
Jeremy Thompson

1
Cảm ơn rất nhiều. Tùy chọn đầu tiên làm việc cho tôi. Tôi nhớ mình đã gặp phải bao nhiêu rắc rối khi gỡ cài đặt Office 32 bit và chỉ sau khi cài đặt văn phòng 64 bit, vấn đề này đã được khắc phục trước đó. Nhưng thành phần văn phòng 64 bit này đã thực hiện phép thuật thay thế.
Biki

Vì 2 điểm tôi đã sửa. Cảm ơn rât nhiều. Tôi cần cài đặt cái này microsoft.com/doad/en/conf Confirmation.aspx ? id=23734 .
SENA

33

Tôi đã gặp lỗi / ngoại lệ này trong Visual Studio 2010 khi tôi thay đổi bản dựng của mình trong hộp thoại Trình quản lý cấu hình từ "x86" thành "Bất kỳ CPU". Trình điều khiển cơ sở dữ liệu OLEDB này tôi hiểu chỉ hoạt động trong x86 và không tương thích 64 bit. Thay đổi cấu hình xây dựng trở lại x86 đã giải quyết vấn đề cho tôi.


5
OLEDB tương thích với x64. Nó có thể chạy dưới nền tảng BẤT K ,, KHÔNG CHỈ x86, nhưng với bất kỳ CPU nào. Xem câu trả lời đầy đủ bên dưới: stackoverflow.com/a/32760211/3637582
Merav Kochavi

Khi gỡ lỗi ứng dụng trong Visual Studio, nó thực sự giúp chọn x86 thay vì bất kỳ CPU / x64 nào trong trình quản lý cấu hình.
biết đến

25

Tôi đã cài đặt trình điều khiển MS và nó vẫn không hoạt động với tôi. Sau đó, tôi tìm thấy bài viết blog này đã giải quyết vấn đề. Đọc nó ở đó, người khác sử dụng hai hình ảnh này (được liên kết từ bài đăng đó) làm tổng hợp TLDR:

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây


Đã sắp đăng bài này là đóng góp của tôi. Đây là vấn đề của tôi. Tôi đã thay đổi cài đặt IIS này vào ngày hôm qua vì một dự án trong giải pháp của tôi đã được biên dịch x86, vì vậy tôi giả sử nó sẽ phân loại toàn bộ chương trình là 32 bit.
Lee

Máy chủ của tôi đang chạy @ 64 bit nhưng Thành phần MS Office được cài đặt là 32 bit. Điều này đã giải quyết vấn đề của tôi. Cảm ơn bạn.
MarceloBarbosa

Thật là một điều khó khăn đáng kinh ngạc để làm việc :(, tôi tự hỏi liệu bạn có thể viết kịch bản này trong powershell và chỉ tích hợp nó vào một loại kịch bản thiết lập máy chủ tự động nào không?
David Rogers

@DavidRogers có lẽ, nhưng tôi không phải là chuyên gia về PS, vì vậy đừng tìm tôi vì điều đó! ;-)
Shaul Behr

@ShaulBehr Hy vọng rằng điều này cung cấp cái nhìn sâu sắc cho người khác, Lệnh cụ thể mà tôi đã sử dụng là (Trong cửa sổ powershell / cmd nâng cao): "C: \ Windows \ System32 \ inetsrv \ ./ appcmd đặt apppool /apppool.name:YOURAPPPOOLNAMEH "
David Rogers

16

Nếu bạn đang sử dụng 64-bit nhưng vẫn có vấn đề thậm chí sau khi cài đặt AccessDatabaseEngine, xem bài này , nó đã giải quyết được vấn đề đối với tôi.

tức là bạn cần cài đặt AccessDatabaseEngine này


15

Đối với tất cả những người vẫn bị ảnh hưởng bởi điều này.

Tôi đã nhận được lỗi ...

OLEDB error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."

... theo mô tả của OP, Shailesh Sahu.

Tôi có Windows 7 64 bit.

Vấn đề của tôi nằm trong các tập lệnh PowerShell , nhưng đang sử dụng chuỗi kết nối, tương tự như bài đăng của OP, vì vậy, hy vọng những phát hiện của tôi có thể được áp dụng cho C #, PowerShell và bất kỳ ngôn ngữ nào khác dựa trên trình điều khiển "Microsoft.ACE.OLEDB".

Tôi đã làm theo hướng dẫn về chủ đề diễn đàn MS này: http://goo.gl/h73RmI

Trước tiên tôi đã thử cài đặt phiên bản 64 bit , sau đó cài đặt phiên bản 32 bit của AccessDatabaseEngine.exe từ trang này http://www.microsoft.com/en-us/doad/details.aspx?id=13255

Nhưng vẫn không có niềm vui.

Sau đó tôi đã chạy mã bên dưới trong PowerShell (từ trang web của SQL Panda http://goo.gl/A3Hu96 )

(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 

... đã cho tôi kết quả này (Tôi đã xóa các nguồn dữ liệu khác để lấy ngắn gọn) ...

SOURCES_NAME              SOURCES_DESCRIPTION                                                                       
------------              -------------------                                                                       
Microsoft.ACE.OLEDB.15.0  Microsoft Office 15.0 Access Database Engine OLE DB Provider

Như bạn thấy, tôi có Microsoft.ACE.OLEDB. 15 .0 (mười lăm) không phải Microsoft.ACE.OLEDB. 12 .0 (mười hai)

Vì vậy, tôi đã sửa đổi chuỗi kết nối của mình thành 15 và nó đã hoạt động.

Vì vậy, một đoạn PowerShell nhanh để trình bày cách mã hóa phiên bản ...

$AceVersion = ((New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | Where-Object { $_.SOURCES_NAME -like "Microsoft.ACE.OLEDB*" } | Sort-Object SOURCES_NAME -Descending | Select-Object -First 1 SOURCES_NAME).SOURCES_NAME

$connString = "Provider=$AceVersion;Data Source=`"$filepath`";Extended Properties=`"Excel 12.0 Xml;HDR=NO`";"

sửa đổi để chọn phiên bản ACE mới nhất, nếu có nhiều hơn một

Hy vọng, bất cứ ai tìm thấy điều này bây giờ đều có thể kiểm tra xem phiên bản OLEDB nào được cài đặt và sử dụng số phiên bản phù hợp.


Xin chào, tôi đang cố đọc các trang tính Excel bằng PowerShell. Các tệp Excel được lưu trữ trong thư viện tài liệu SharePoint và không có cài đặt Excel trên máy chủ. Tôi có máy chủ windows 2008 R2. Tôi đã cài đặt Trình điều khiển hệ thống Office: Các thành phần kết nối dữ liệu tuy nhiên khi tôi chạy truy vấn của bạn không thể thấy Microsoft.ACE.OLEDB. Bạn có một ý tưởng về điều đó? và đề nghị nào? Cảm ơn trước.
doganak

3
Tôi tìm thấy câu trả lời. Tôi đã yêu cầu quản trị viên hệ thống của chúng tôi cài đặt MS Access Database Engine. Anh ta đã cài đặt phiên bản x86. Khi tôi chạy lại truy vấn trong PowerShell x86, tôi thấy ACE.OLEDB.
doganak

Mã PowerShell tuyệt vời. Tôi đã có phiên bản 32 bit (không xuất hiện trong danh sách PowerShell), điều này khiến tôi không thể cài đặt phiên bản 64 bit. Khi tôi xóa phiên bản 32 bit, tôi có thể cài đặt phiên bản 64 bit mà không cần thông báo "bạn đã có các thành phần Office 32 bit ...". Phiên bản 64 bit đã xuất hiện trong danh sách PowerShell và ứng dụng của tôi bắt đầu hoạt động.
Doppelganger

13

Mặc dù nhiều câu trả lời đã được đưa ra, vấn đề tôi gặp phải vẫn chưa được đề cập.

  • Kịch bản của tôi: Ứng dụng 64-bit, Win10-64, Office 2007 32-bit được cài đặt.
  • Cài đặt Trình cài đặt 32-bit AccessDatabaseEngine.exe khi được tải xuống từ MS báo cáo thành công, nhưng KHÔNG được cài đặt, như được xác minh với Tập lệnh Powershell của một trong các bài đăng ở trên.

  • Cài đặt trình cài đặt 64-bit AccessDatabaseEngine_X64.exe đã báo cáo một thông báo lỗi gây sốc:

nhập mô tả hình ảnh ở đây

Giải pháp rất đơn giản đã được tìm thấy ở đây trên một trang Autodesk. Chỉ cần thêm tham số / thụ động vào chuỗi dòng lệnh, như thế này:

AccessDatabaseEngine_X64.exe / thụ động

Cài đặt thành công, trình điều khiển OleDb đã làm việc.

Các tệp Excel tôi đang xử lý với OleDb thuộc loại xlsx, được sản xuất với EPPlus 4.5 và được sửa đổi với Excel 2007.


1
Tôi có thể cài đặt AccessDatabaseEngine_X64.exe theo những cách thông thường nhưng tôi đã sử dụng tham số thụ động để cài đặt cân bằng 32 bit (AccessDataBaseEngine.exe). Sau đó, cuối cùng tôi cũng có thể kết nối với cơ sở dữ liệu Access từ Visual Studio 2019.
VolkanOzcan

10

Bạn cần thay đổi Nền tảng giải pháp từ "Bất kỳ CPU" thành "x86" hoặc "x64" dựa trên độ bit của cài đặt văn phòng.

Các bước được đưa ra dưới đây:

  1. Nhấp chuột phải vào Tệp giải pháp trong Solution Explorer: nhập mô tả hình ảnh ở đây

    1. Nhấp vào Trình quản lý cấu hình.
    2. Nhấp vào Nền tảng hoạt động thả xuống, nếu x86 đã có rồi thì chọn cái đó, nhấp vào Mới. nhập mô tả hình ảnh ở đây

    3. Chọn x86 hoặc x64 từ danh sách nền tảng mới: nhập mô tả hình ảnh ở đây

Biên dịch và chạy ứng dụng của bạn.


6

Nếu "AccessDatabaseEngine" được cài đặt vẫn không giúp ích, bên dưới là giải pháp:

Bạn cần thay đổi Nền tảng giải pháp hoạt động từ "Bất kỳ CPU" thành "x86".

Nhà cung cấp OLEDB chưa được đăng ký trên máy cục bộ

Từ CodeProject.com


Bạn có thể chạy nó dưới nền tảng BẤT K ,, KHÔNG CHỈ 'x86', nhưng cũng như 'Bất kỳ CPU' nào như 'x64'. Xem câu trả lời đầy đủ bên dưới: stackoverflow.com/a/32760211/3637582
Merav Kochavi

6

Tôi đã có thể khắc phục điều này bằng cách làm theo các bước trong bài viết này: http://www.mikedotnetting.com/article/280/solve-the-microsoft-ace-oledb-12-0-provider-is-not-registered- trên máy cục bộ

Điểm mấu chốt đối với tôi là:

Khi gỡ lỗi với IIS,

theo mặc định, Visual Studio sử dụng phiên bản 32 bit. Bạn có thể thay đổi điều này từ trong Visual Studio bằng cách đi tới Công cụ »Tùy chọn» Dự án và giải pháp »Dự án web» Chung và chọn

"Sử dụng phiên bản 64 bit của IIS Express cho các trang web và dự án"

Sau khi kiểm tra tùy chọn đó, sau đó đặt mục tiêu nền tảng của dự án của tôi trở lại "Bất kỳ CPU" nào (tôi đã đặt nó thành x86 ở đâu đó trong quá trình xử lý sự cố), tôi đã có thể khắc phục lỗi.


1
Cảm ơn bạn, hầu hết các câu trả lời khác là đã giảm xuống còn 32 bit, nhưng điều này giúp bạn tiến lên 64 bit.
illinoistim

Cảm ơn bạn rất nhiều đây là những gì tôi đang tìm kiếm.
Manoj Kalluri

6

Nếu bạn đang gỡ lỗi một dự án web, chỉ cần đảm bảo IIS Express đang chạy trong 32 hoặc 64 bit tùy thuộc vào cài đặt dự án của bạn.

Đi đến

Công cụ> Tùy chọn> Dự án và Giải pháp> Dự án web

và từ đó kiểm tra (hoặc bỏ chọn) 'Sử dụng phiên bản 64 bit của IIS Express ...'


1
Wow rất nhiều giờ thử các giải pháp khác, chỉ có sửa chữa của bạn! cảm ơn
Hernaldo Gonzalez

5

Trước tiên hãy xác minh phiên bản microsoft.ace.oledb.12.0 nào được cài đặt trong hệ thống của bạn.

Kiểm tra đường dẫn bên dưới C: \ Tệp chương trình \ Tệp chung \ Microsoft đã chia sẻ \ OFFICE14 \ ACEOLEDB.DLL --64 bit được cài đặt

Kiểm tra đường dẫn bên dưới C: \ Tệp chương trình (x86) \ Tệp chung \ Microsoft đã chia sẻ \ OFFICE14 \ ACEOLEDB.DLL - x86 bit được cài đặt

Nếu (x86) được cài đặt thì sử dụng nền tảng giải pháp thay đổi trình quản lý cấu hình thành x86, cho x64 thay đổi thành x64.

Nếu không có sẵn thì cài đặt bằng liên kết dưới đây

https://www.microsoft.com/en-us/doad/details.aspx?id=23734


3

syp_dino,

Giải pháp cho tôi như bạn đã đề xuất cho nhà cung cấp "Microsoft.ACE.OLEDB.12.0 'không được đăng ký trên máy cục bộ" là thay đổi Nền tảng giải pháp hoạt động từ "Bất kỳ CPU" thành "x86".

Khi tôi thực hiện các bước đó, xây dựng lại giải pháp, lấy EXE và đặt vào mạng, mọi thứ đều hoạt động trơn tru trên máy Windows 7 64 bit.


Bạn có thể chạy nó dưới bất kỳ nền tảng nào, KHÔNG CHỈ x86, nhưng với bất kỳ CPU nào. Xem câu trả lời của tôi dưới đây: stackoverflow.com/a/32760211/3637582
Merav Kochavi

3

Tôi gặp vấn đề này khi cố gắng nhập dữ liệu từ tệp excel (xlsx) vào SQL Server DB bằng SSMS 2014.

Các hệ thống Office 2007 Driver: Data Connectivity Components cài đặt đã làm các trick cho tôi.


... Và nếu điều đó không hiệu quả, hãy thử chọn một "Phiên bản Excel" khác từ danh sách thả xuống của màn hình "chọn nguồn dữ liệu". stackoverflow.com/a/56171883/283895
tgolisch

@Taran Link không khả dụng
evry1 thác

Cái này trông giống như tập tin, nhưng tôi không thể xác nhận download.cnet.com/ từ
Taran

3

Tôi phải đối mặt với vấn đề tương tự. Chuyển đến Thuộc tính Giải pháp và thay đổi Bất kỳ CPU nào thành x86, tôi nghĩ rằng nó sẽ thực hiện công việc.


3

thực hiện 2 bước này: 1. trong menu này: project -> yourproject property ... -> Build: uncheck "prefer 32-Bit" 2. in ConnectionString: viết cuote trước và sau Thuộc tính mở rộng, như thế này: Extended Properties = ' Excel 12.0 Xml; HDR = CÓ '

                var fileName = string.Format("{0}", openFileDialog1.FileName);
            //var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
            var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties='Excel 12.0 Xml;HDR=YES'", fileName);
            var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
            var ds = new DataSet();

            adapter.Fill(ds, TableNmae);

            DataTable data = ds.Tables[TableNmae];
            dg1.DataSource = data;

Bỏ chọn "Thích 32-bit" dường như hoạt động với tôi trong khi cài đặt Microsoft Access Database Engine 2010 Redistributable.
CNTT

Tôi đã bỏ chọn 'Thích 32-bit' và nó đã hoạt động !!!
dùng1584253

3

Các cấu hình này hoạt động vào tháng 1 năm 2020 trên bản dựng máy mới của tôi:

(Chỉ 1 - x64) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 được cài đặt với / đối số thụ động, cài đặt bản dựng VStudio được đặt thành x64 một cách rõ ràng, với chuỗi kết nối sau: Carrier = Microsoft.ACE.OLEDB.16.0; Nguồn dữ liệu = D: ... \ MyDatabase.accdb

. Microsoft.ACE.OLEDB.16.0; Nguồn dữ liệu = D: ... \ MyDatabase.accdb

(Chỉ 3 - x32) Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32 bit) được cài đặt với / đối số thụ động, cài đặt bản dựng VStudio được đặt thành x86, với chuỗi kết nối sau: Carrier = Microsoft.ACE.OLEDB.12.0; Nguồn dữ liệu = D: ... \ MyDatabase.accdb

THÔNG BÁO FAILURE

Sử dụng nhà cung cấp ACE.OLEDB.12.0 x64 trong chuỗi kết nối không thành công chỉ với AccessDatabaseEngine_x64 2016 được cài đặt như trên trong (1).

Sử dụng AnyCPU trong cài đặt xây dựng phòng thu trực quan không thành công trong (1). Cài đặt x64 là bắt buộc. Có lẽ điều này là do AnyCPU có nghĩa là Vstudio phải xem nhà cung cấp x32 ACE.OLEDB.nn.0 tại thời điểm biên dịch.

Công cụ ACE.OLEDB.12.0 2016 x32 / thụ động sẽ KHÔNG cài đặt khi thấy các ứng dụng x64 xung quanh. (Trình cài đặt ACE.OLEDB.12.0 2010 x32 / thụ động đã hoạt động.)

KẾT LUẬN

Để sử dụng cài đặt bản dựng x64, bạn cần có công cụ cơ sở dữ liệu x64 2016 VÀ nhà cung cấp chuỗi kết nối ACE.OLEDB.16.0 VÀ cài đặt bản dựng x64 rõ ràng để hoạt động với Office 365 vào tháng 1 năm 2020. Sử dụng tùy chọn / thụ động giúp cài đặt dễ dàng. Tín dụng cho bất cứ ai đăng mẹo đó!

Để sử dụng AnyCPU, tôi cần phải cài đặt cả động cơ ACE.OLEDB.12.0 2010 x32 và động cơ ACE.OLEDB.16.0 x64. Bằng cách đó, Vstudio có thể thấy cả hai công cụ x32 và x64 tại thời gian biên dịch "AnyCPU". Tôi có thể thay đổi chuỗi kết nối của nhà cung cấp thành ACE.OLEDB.12.0 cho hoạt động x32 hoặc thành ACE.OLEDB.16.0 cho hoạt động x64. Cả hai đều hoạt động tốt.

Để sử dụng cài đặt bản dựng x86, bạn cần phải có công cụ cơ sở dữ liệu 2010 x32 VÀ nhà cung cấp chuỗi kết nối ACE.OLEDB.12.0 VÀ cài đặt bản dựng x86 rõ ràng để hoạt động với Office 365 x32 vào tháng 1 năm 2020.


2

Tôi gặp vấn đề tương tự khi chúng tôi đang đọc tệp Excel.

Lịch sử của vấn đề:

Gần đây chúng tôi đã chuyển ứng dụng của chúng tôi từ 32 bit sang 64 bit do yêu cầu bộ nhớ. Vì vậy, chúng tôi đã di chuyển các cửa sổ 7 từ 32 bit sang 64 bit. Nhưng chúng tôi vẫn cài đặt văn phòng 32 bit trên máy của mình.

bởi vì, chúng tôi đã gặp sự cố này khi nhập dữ liệu Excel vào ứng dụng.

Giải pháp,

Tôi đã tải xuống phiên bản 64 bit của http://www.microsoft.com/en-us/doad/details.aspx?id=13255 và được cài đặt với đối số là,

AccessDatabaseEngine_x64.exe / thụ động

Không có bất kỳ mã thay đổi, vấn đề của tôi được giải quyết.

Ghi chú:

Trên hệ điều hành 64 bit và văn phòng 64 bit, chức năng của tôi đã hoạt động tốt mà không cần sửa lỗi này. Khắc phục sự cố này chỉ được yêu cầu trong khi ứng dụng của chúng tôi chạy 64 bit trên HĐH 64 bit đang cài đặt văn phòng 32 bit trên đó.


Nhưng, Microsoft chống lại giải pháp này. Rất ít khách hàng của tôi quan sát thấy sự biến dạng trong các chương trình Office khác vì cách khắc phục này.
Rahul Techie


1

Tôi làm theo hướng dẫn của người khác; cài đặt bản vá này, cài đặt bản vá đó cũng như Microsoft Access Database Engine 2010.

Vấn đề của tôi là tôi đang sử dụng cùng một thư viện (linq2sql) trong 2 trang web trên máy của mình; 1 công trình và 1 không.

Cuối cùng, tôi thấy rằng tôi phải "kích hoạt các ứng dụng 32 bit" trong cài đặt nâng cao của ứng dụng cho trang web không hoạt động của mình.

Bây giờ mọi thứ đều hoạt động tốt.


1

cũng có thể thử các bước này

Trong Máy chủ SQL, 1.Mở một cơ sở dữ liệu 2.Clic trong tùy chọn 'Server Obtect' 3.Clic in 'Linked Servers' 4.Clic in 'Providers' 5.Clic Rigth in 'Microsoft.ACE.OLEDB.12.0' 6. Bỏ chọn tất cả các tùy chọn và đóng


1

Hãy nhớ cài đặt AccessDatabaseEngine trên máy chủ cho ứng dụng web.


1

Tôi gặp vấn đề tương tự nhưng trong trường hợp này , nhà cung cấp microsoft-ace-oledb-12-0 đã được cài đặt trên máy của tôi và hoạt động tốt cho các ứng dụng khác được phát triển.

Sự khác biệt giữa ứng dụng đó và ứng dụng tôi gặp sự cố là Ứng dụng cũ đang chạy trên " IIS cục bộ " trong khi ứng dụng bị lỗi là " IIS Express (chạy từ Visual Studio"). Vì vậy, những gì tôi đã làm là-

  1. Nhấp chuột phải vào Tên dự án.
  2. Chuyển đến thuộc tính
  3. Đi tới Tab Web bên phải.
  4. Trong Máy chủ, chọn IIS cục bộ và nhấp vào nút Tạo thư mục ảo.
  5. Chạy lại ứng dụng và nó hoạt động.

1

Tôi đã cài đặt Microsoft Access Database Engine 2010 Redistributable trên máy của mình nhưng vẫn nhận được lỗi Nhà cung cấp Microsoft OLED OLEDB .

Sau đó, tôi nhớ lại rằng tôi đã nâng cấp lên Office 2016 gần đây, vì vậy, có lẽ tôi nên thử cài đặt lại Microsoft Access Database Engine 2010 Redistributable . Và điều đó đã khắc phục vấn đề trên máy của tôi.

Vì vậy, nếu bạn đã nâng cấp lên phiên bản MS Office khác hoặc thậm chí sửa chữa / cài đặt lại MS Office thì hãy thử cài đặt lại Microsoft Access Database Engine 2010 Redistributable trước khi lãng phí thời gian với việc tìm các bản sửa lỗi khác. Chúc may mắn!


1

1.) Xác minh chuỗi kết nối của bạn với ConnectionStrings.com .

2.) Hãy chắc chắn rằng bạn đã cài đặt công cụ cơ sở dữ liệu chính xác. Đây là hai công cụ cơ sở dữ liệu đã giúp tôi.

Công cụ cơ sở dữ liệu Microsoft Access 2010 có thể phân phối lại

Trình điều khiển hệ thống Office 2007: Các thành phần kết nối dữ liệu

3.) Có thể có một vấn đề với nền tảng mục tiêu xây dựng của bạn là "Bất kỳ CPU", nó có thể cần phải là "X86" (Thuộc tính, Xây dựng, Mục tiêu nền tảng).


Bạn có thể chạy nó dưới nền tảng BẤT K ,, KHÔNG CHỈ 'x86', nhưng cũng như 'Bất kỳ CPU' nào như 'x64'. Xem câu trả lời đầy đủ bên dưới: stackoverflow.com/a/32760211/3637582
Merav Kochavi

Ok, tôi không nghĩ đó là trường hợp của tôi ... vì vậy vẫn đáng để đề cập rằng nền tảng mục tiêu xây dựng của ai đó có thể là một phần của vấn đề.
u8it

1

Nếu bạn gặp lỗi này khi cố gắng sử dụng ACE từ một ứng dụng ASP.NET, nguyên nhân rất có thể là do bạn đã cài đặt một trong các phiên bản 32 bit. Theo mặc định, IIS trên hệ điều hành 64 bit sẽ chạy các ứng dụng trong quy trình worker 64 bit. Các quy trình 64 bit không thể tải DLL 32 bit. Khi một cuộc gọi được thực hiện cho nhà cung cấp ACE, quy trình 64 bit sẽ cố gắng xác định vị trí DLL 64 bit. Nếu nó không tồn tại, bạn sẽ nhận được thông báo lỗi đưa bạn đến đây.

Trong trường hợp này, bạn có hai lựa chọn. Đầu tiên, bạn có thể cài đặt phiên bản 64 bit 2010. Nếu bạn đã cài đặt phiên bản 32 bit 2007, bạn chỉ cần cài đặt phiên bản 64 bit 2010 cùng với nó. Nếu bạn đã cài đặt phiên bản 32 bit 2010, bạn cần gỡ cài đặt và tải xuống và cài đặt phiên bản 2010 64 bit. Bạn không thể cài đặt cả phiên bản 32 và 64 bit của nhà cung cấp 2010 cùng một lúc. Nếu bạn đang thực hiện cài đặt trên máy phát triển của mình, bạn cũng có thể bị hạn chế bởi tính năng bit của mọi cài đặt Office hiện có.

Tùy chọn thứ hai là thay đổi nhóm ứng dụng trong IIS để kích hoạt các ứng dụng 32 bit. Nếu bạn đang sử dụng phiên bản đầy đủ của IIS, bạn có thể sử dụng công cụ quản lý để thực hiện việc này (Bảng điều khiển »Công cụ quản trị» Trình quản lý dịch vụ thông tin Internet (IIS)).

Để hiểu thêm xin vui lòng tham khảo liên kết dưới đây


1

Tôi đã nhận được lỗi này khi nhập dữ liệu từ tệp Excel vào MS-SQL. Nhà cung cấp đã được cài đặt (64-bit) và điều này làm tôi ngạc nhiên tại sao nó không hoạt động. Vì vậy, tất cả những gì tôi đã làm là định vị ứng dụng Nhập / Xuất được sử dụng ở đây, tức là .EXE. Và tôi đã tìm thấy nó tại

C: \ Tệp chương trình \ Microsoft SQL Server \ 130 \ DTS \ Binn \ DTSWizard.exe

Sau đó tôi chạy trực tiếp .exe để thực hiện nhập dữ liệu. Va no đa hoạt động!


Hừm, tôi đã có một vài phiên bản ở đó, SSMS phải sử dụng sai phiên bản.
SteveCav

1

Điều này làm việc cho tôi ngay bây giờ.

  1. Truy cập trang này sau đó tải xuống gói phù hợp đó cho máy tính của bạn (AccessDatabaseEngine.exe hoặc AccessDatabaseEngine_X64.exe)
  2. Cài đặt cái đó.
  3. Rất thích ... Mã của bạn đang hoạt động ...

Nhưng đối với gói ứng dụng của bạn, bạn có thể sử dụng bất kỳ giải pháp nào sau đây:

  1. Đi vào "C: \ Program Files (x86) \ Common Files \ microsoft shared" hoặc "C: \ Program Files \ Common Files \ Microsoft Shared" và đặt thư mục "OFFICE14" vào cùng vị trí của tệp gói của bạn.

Hoặc là

  1. Đính kèm hai dự án (trong mục 1) trong gói cài đặt của bạn.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.