sql >> Databasteknik >  >> RDS >> Sqlserver

OLE DB-leverantör Microsoft.ACE.OLEDB.12.0 för länkad server (null) returnerade meddelande Bokmärket är ogiltigt.

Efter många problem med det här problemet hittade jag följande lösning:

  1. På 64-bitarsservrar och -boxar måste du först AVINSTALLERA alla 32-bitars Microsoft Office-program och -instanser (Access 2007-installation, Office 10 32-bitars etc.). Om du inte gör det kan du inte installera de nya 64-bitars Microsoft Access Database Engine 2010 Redistributable-komponenterna. Ja, det är en huvudvärk men det enda sättet jag hittade för att installera de nya ersättningarna för JET-motorkomponenterna som måste köras på 64-bitarsmaskiner.
  2. Ladda ner och installera den nya komponenten från Microsoft:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c06b8369-60dd-4b64-a44b-84b371ede16d&displaylang=en
    • Detta kommer att installera åtkomst och andra motorer du behöver för att konfigurera länkade servrar, OPENROWSET excel-filer, etc.
  3. Öppna SQL Server och kör följande:

    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
    
    • Detta ställer in parametrarna som behövs för att komma åt och köra frågor relaterade till komponenterna. Adress 'null
  4. Om du nu kör OPENROWSET-anrop måste du överge samtal som gjorts med de gamla JET-parametrarna och använda de nya anropen enligt följande:

    (*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. Nu till det roliga…..hitta alla dina Office-diskar och installera om Office och/eller applikationer som behövs tillbaka på maskinen. Du kan installera 64-bitarsversionen av Office 10 genom att gå in på disken och gå in i 64-bitarsmappen och köra den, men se upp eftersom vissa tredjepartsappar i vissa fall inte gränssnitt ännu med den versionen av Office.


  1. Hur gör man samma aggregering på varje kolumn, utan att lista kolumnerna?

  2. MSDTC på servern "servern är inte tillgänglig"

  3. Hur mappar man TYPE TABELL FÖR VARCHAR2(5) i java?

  4. Ställ in ett standardvärde för en kolumn i SQLite:DEFAULT Constraint