Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Il provider OLE DB Microsoft.ACE.OLEDB.12.0 per il server collegato (null) ha restituito il messaggio Il segnalibro non è valido.

Dopo molte lotte con questo problema, ho trovato la seguente soluzione:

  1. Su server e box a 64 bit, devi prima DISINSTALLARE tutte le applicazioni e le istanze di Microsoft Office a 32 bit (installazione di Access 2007, Office 10 a 32 bit e così via). In caso contrario, non è possibile installare i nuovi componenti ridistribuibili di Motore di database di Microsoft Access 2010 a 64 bit. Sì, è un mal di testa, ma l'unico modo che ho trovato per installare i nuovi componenti sostitutivi per i componenti del motore JET che devono funzionare su macchine a 64 bit.
  2. Scarica e installa il nuovo componente da Microsoft:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c06b8369-60dd-4b64-a44b-84b371ede16d&displaylang=en
    • Questo installerà l'accesso e altri motori necessari per configurare server collegati, file excel OPENROWSET, ecc.
  3. Apri SQL Server ed esegui quanto segue:

    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
    
    • Questo imposta i parametri necessari per accedere ed eseguire query relative ai componenti. Indirizzo 'null
  4. Ora, se stai eseguendo chiamate OPENROWSET devi abbandonare le chiamate effettuate utilizzando i vecchi parametri JET e utilizzare le nuove chiamate come segue:

    (*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. Ora per la parte divertente…..trova tutti i tuoi dischi Office e reinstalla Office e/o le applicazioni necessarie sulla macchina. Puoi installare la versione a 64 bit di Office 10 accedendo al disco, nella cartella a 64 bit ed eseguendola, ma attenzione perché in alcuni casi alcune app di terze parti non si interfacciano ancora con quella versione di Office.