Imansible creare un’istanza del provider OLE DB Microsoft.Jet.OLEDB.4.0 per il server collegato null

Sto cercando di esportare dai miei dati Table in Excel tramite query T-SQL . Dopo poche ricerche sono arrivato a questo

 INSERT INTO OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=G:\Test.xls;', 'SELECT * FROM [Sheet1$]') SELECT * FROM dbo.products 

Quando eseguo la query precedente sto ricevendo questo errore

Messaggio 7302, livello 16, stato 1, riga 7 Imansible creare un’istanza del provider OLE DB “Microsoft.Jet.OLEDB.4.0” per il server collegato “(null)”.

Così è andato attraverso internet per la soluzione, ha ottenuto il link qui sotto

https://blogs.msdn.microsoft.com/spike/2008/07/23/ole-db-provider-microsoft-jet-oledb-4-0-for-linked-server-null-returned-message-unspecified- errore/

    Nel link precedente dicevano che dovevamo essere amministratori per creare una cartella nella cartella TEMP dell’unità C perché OPENROWSET crea alcuni file o cartelle nella cartella TEMP

    Lo sto facendo in My Home PC e sono l’amministratore. Sto ancora ottenendo lo stesso errore.

    Dettagli SQL SERVER

    Microsoft SQL Server 2016 (RC1) – 13.0.1200.242 (X64) 10 mar 2016 16:49:45 Copyright (c) Microsoft Corporation Enterprise Evaluation Edition (64-bit) su Windows 10 Pro 6.3 (Build 10586:)

    Qualsiasi suggerimento per risolvere il problema sarà molto apprezzato

    Aggiornamento: ho già configurato le Ad Hoc Distributed Queries e

    Eseguita la query di seguito

     EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 1 GO EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 1 GO 

    ora sto ottenendo questo errore

    Messaggio 7438, livello 16, stato 1, riga 7 Il provider OLE DB a 32 bit “Microsoft.Jet.OLEDB.4.0” non può essere caricato in-process su un server SQL a 64 bit.

    OK, l’ho fatto funzionare per me, e sembra che SO mi consenta di postare oggi.

    Ho MS Sql server 2012 e Office 2013. Questo sembra essere molto schizzinoso, quindi potrebbe essere necessario adattarsi alle versioni specifiche.

    1. Scarica Microsoft.ACE.OLEDB.12.0 per Windows, versione a 64 bit disponibile qui: https://www.microsoft.com/en-us/download/details.aspx?id=13255
    2. Installalo sul tuo server.
    3. Controllare l’utente che esegue SQL Server e assicurarsi che l’utente abbia accesso alla directory temporanea C: \ Windows \ ServiceProfiles \ LocalService \ AppData \ Local \ Temp se si tratta di un account di servizio locale o C: \ Windows \ ServiceProfiles \ NetworkService \ AppData \ Local \ Temp se si tratta di un account di servizio di rete.
    4. Configura le ‘query distribuite ad hoc’ e abilita i file Microsoft.ACE.OLEDB questo modo:

    Ecco i comandi SP_CONFIGURE:

     SP_CONFIGURE 'show advanced options', 1; GO RECONFIGURE; SP_CONFIGURE 'Ad Hoc Distributed Queries', 1; GO RECONFIGURE; EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1 EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParam', 1 

    Assicurati di registrare msexcl40.dll in questo modo:

     regsvr32 C:\Windows\SysWOW64\msexcl40.dll 

    Controlla sp_configure / RECONFIGURE …

     sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ad Hoc Distributed Queries', 1; GO RECONFIGURE; GO 

    Vedi questi link per maggiori informazioni:

    https://technet.microsoft.com/en-us/library/aa259616(v=sql.80).aspx

    http://blog.sqlauthority.com/2010/11/03/sql-server-fix-error-ms-jet-oledb-4-0-cannot-be-used-for-distributed-queries-because-the- fornitore-si-usato-to-run-in-appartamento-mode /

    Lavori !!! Grazie mille. Solo per il server Win 64-bit 2012R2. Consentitemi di inserire l’intero script di lavoro che ripete parzialmente i bit dall’alto, che non sono facili (come per me) combinare insieme:

    1) Scarica Microsoft.ACE.OLEDB.12.0 per Windows, versione a 64 bit disponibile qui: https://www.microsoft.com/en-us/download/details.aspx?id=13255

    2) Crea file excel con rispettive colonne (nome e class in questo caso).

    3) Esegui il codice qui sotto:

     sp_configure 'show advanced options', 1; RECONFIGURE; GO sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE; GO /* -- Not sure commented bits are necessary but I also have run them EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 1 GO EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 1 GO -- below two lines failed with: Msg 2787, Level 16, State 1, Procedure sp_MSset_oledb_prop, Line 106 Invalid format specification: '%1!.'. EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1 EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParam', 1 -- but works all two as below: EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1 EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1 -- Succeded to run after success with Excel so does not looks like necessary */ INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database=C:\testing.xlsx;', 'SELECT Name, Class FROM [Sheet1$]') SELECT [Name],[Class] FROM Qry_2 GO 

    Esegui le query sottostanti per risolvere questo problema:

     EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 1 GO EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 1 GO