उन सभी के लिए जो अभी भी इससे प्रभावित हैं।
मुझे त्रुटि मिल रही है ...
OLEDB error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."
... जैसा कि ओपी ने बताया है, शैलेश साहू।
मेरे पास 64 बिट विंडोज 7 है।
मेरी समस्या पॉवरशेल के भीतर है स्क्रिप्ट के , लेकिन ओपी के पद के समान एक कनेक्शन स्ट्रिंग का उपयोग कर रहा है, इसलिए उम्मीद है कि मेरे निष्कर्षों को "Microsoft.ACE.OLEDB" ड्राइवर पर निर्भर सी #, पॉवरशेल और किसी अन्य भाषा पर लागू किया जा सकता है।
मैंने इस एमएस फोरम थ्रेड पर निर्देशों का पालन किया: http://goo.gl/h73RmI
मैंने पहले 64 बिट संस्करण को स्थापित करने की कोशिश की , फिर इस पृष्ठ से AccessDatabaseEngine.exe के 32 बिट संस्करण को
स्थापित करना http://www.microsoft.com/en-us/download/details.aspx?id=13255
लेकिन फिर भी कोई खुशी नहीं।
मैंने तब PowerShell (SQL पांडा की साइट http://goo.gl/A3Hu96 से ) के नीचे कोड चलाया
(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION
... जिसने मुझे यह परिणाम दिया (मैंने अन्य डेटा स्रोतों को संक्षिप्तता के लिए हटा दिया है) ...
SOURCES_NAME SOURCES_DESCRIPTION
------------ -------------------
Microsoft.ACE.OLEDB.15.0 Microsoft Office 15.0 Access Database Engine OLE DB Provider
जैसा कि आप देख सकते हैं, मेरे पास Microsoft.ACE.OLEDB है। 15 .0 (पंद्रह) Microsoft.ACE.OLEDB नहीं। 12 .0 (बारह)
इसलिए, मैंने अपने कनेक्शन स्ट्रिंग को 15 तक संशोधित किया और यह काम किया।
तो, एक त्वरित PowerShell स्निपेट को प्रदर्शित करने के लिए कि संस्करण को नरम-कोड कैसे किया जाए ...
$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`";"
नवीनतम ACE संस्करण लेने के लिए संशोधित किया गया है, यदि एक से अधिक हो
उम्मीद है, इसे खोजने वाला कोई भी व्यक्ति यह देख सकता है कि OLEDB संस्करण क्या स्थापित है और उपयुक्त संस्करण संख्या का उपयोग करें।