Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Der OLE DB-Anbieter Microsoft.ACE.OLEDB.12.0 für den Verbindungsserver (Null) hat die Meldung „Lesezeichen ist ungültig“ zurückgegeben.

Nach vielen Kämpfen mit diesem Problem habe ich die folgende Lösung gefunden:

  1. Auf 64-Bit-Servern und -Boxen müssen Sie zuerst alle 32-Bit-Microsoft Office-Anwendungen und -Instanzen (Access 2007-Installation, Office 10 32-Bit usw.) DEINSTALLIEREN. Andernfalls können Sie die neuen 64-Bit-Komponenten von Microsoft Access Database Engine 2010 Redistributable nicht installieren. Ja, das bereitet Kopfschmerzen, aber der einzige Weg, den ich gefunden habe, um die neuen Ersatzteile für die JET-Engine-Komponenten zu installieren, die auf 64-Bit-Rechnern laufen müssen.
  2. Laden Sie die neue Komponente von Microsoft herunter und installieren Sie sie:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c06b8369-60dd-4b64-a44b-84b371ede16d&displaylang=en
    • Dadurch werden der Zugriff und andere Engines installiert, die Sie zum Einrichten von Verbindungsservern, OPENROWSET-Excel-Dateien usw. benötigen.
  3. Öffnen Sie SQL Server und führen Sie Folgendes aus:

    sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    sp_configure 'Ad Hoc Distributed Queries', 1;
    GO
    RECONFIGURE;
    GO
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
    GO
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
    GO
    
    • Dies legt die Parameter fest, die für den Zugriff auf und die Ausführung von Abfragen in Bezug auf die Komponenten erforderlich sind. Adresse „null“
  4. Wenn Sie nun OPENROWSET-Aufrufe ausführen, müssen Sie Aufrufe aufgeben, die mit den alten JET-Parametern getätigt wurden, und die neuen Aufrufe wie folgt verwenden:

    (*Example, importing an EXCEL file directly into SQL):
    DONT DO THIS….
    SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;HDR=YES;Database=c:\PATH_TO_YOUR_EXCEL_FILE.xls','select * from [sheet1$]')
    
    USE THIS INSTEAD…
    SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=c:\PATH_TO_YOUR_EXCEL_FILE.xls','select * from [sheet1$]')
    
    *At this point resolved two SQL issues and ran perfectly
    
  5. Nun zum lustigen Teil…..finden Sie alle Ihre Office-Festplatten und installieren Sie Office und/oder benötigte Anwendungen wieder auf dem Computer. Sie können die 64-Bit-Version von Office 10 installieren, indem Sie auf die Festplatte gehen und in den 64-Bit-Ordner gehen und sie ausführen, aber seien Sie vorsichtig, da einige Apps von Drittanbietern in einigen Fällen noch keine Schnittstelle zu dieser Version von Office haben.