چگونه می توان خطای provider is not registered on the local machine را بررسی نمود؟

گاهی برنامه های نوشته شده تحت پلتفرم net. که برای ذخیره اطلاعات خود از بانک های اطلاعاتی Access یا Excel استفاده می کنند، با پیام خطای “Microsoft.Jet.OLEDB.4.0 provider is not registered on the local machine ” و یا “Microsoft.ACE.OLEDB.12.0 provider is not registered on the local machine مواجه می شوند.

 این مشکل زمانی به وقوع می پیوندد  که کاربر از OLE DB Provider  Jet یا Ace  (یک کامپوننت نرم افزاری جهت برقراری ارتباط مصرف کننده OLE DB منبع داده ها میباشد ) برای دسترسی به فایلهای دیتابیس مبتنی بر Microsoft Office  مانند فایلهای Excel یا  Access بر روی سیستم های 64  بیتی استفاده شده باشد. در چنین شرایطی در صورتیکه کاربر از پلتفرم 64 بیتی استفاده نموده باشد، حتی اگر provider های مذکور نیز به درستی نصب شده باشند، بازهم به خطای مربوطه برخورد خواهد کرد.

مشکل مورد نظر در اینجا است که برنامه ذکر شده در هنگام کامپایل، برای پلتفرم 64 بیتی (X64 )کامپایل می شود، حال آنکه هر دو provider های مورد نظر (Jet / ACE OLEDB ) فقط دارای نسخه های پشتیبانی شده بر روی سیستم 32 بیتی هستند (x86-32 ) و پردازش های 64 بیتی نمیتوانند کامپوننت های 32 بیتی را بارگذاری نمایند بنابراین پیام خطای فوق رخ خواهد داد.

برای رفع خطاهای فوق باید برنامه مورد نظر خود را برای پلتفرم 32 بیتی کامپایل نمایید. بدین صورت که در محیط IDE (visual studio 2008-2010) قسمت تنظیمات مربوط به کامپایل و سربرگ "Build" ، پلتفرم مقصد را از حالت "Any CPU " خارج کرده و بر روی "X86" قرار دهید و سپس کامپایل نمایید.(همانند شکل زیر)

 

 

 

 

لازم به ذکر است مایکروسافت به همراه  Office 2010 نسخه ای 64 بیتی از ACE OLE DB  ، با نام Microsoft Access Database Engine عرضه کرده است که میتواند به عنوان جایگزینی مناسب برای Jet OLEDB Provider مورد استفاده قرار گیرد. برای استفاده از Provider مربوط باید ConnectionString خود راجهت اتصال  بر روی “Microsoft.ACE.OLEDB.12.0 ”  تنظیم نمایید.