Cannot create an instance of OLE DB provider Microsoft.Jet.OLEDB.4.0 for linked server null

前端 未结 4 1170
有刺的猬
有刺的猬 2020-11-29 01:44

I am trying to export from my Table data into Excel through T-SQL query. After little research I came up with this

IN         


        
相关标签:
4条回答
  • 2020-11-29 02:02

    Works !!! Great thanks. Just for 64-bit Win server 2012R2. Let me put the whole working script partially repeating bits from above which are not easy (as for me) to combine together:

    1) Download the Microsoft.ACE.OLEDB.12.0 for Windows, 64 bit version found here: https://www.microsoft.com/en-us/download/details.aspx?id=13255

    2) Create excel file with respective columns (name and class in this case).

    3) Run code below:

    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
    
    0 讨论(0)
  • 2020-11-29 02:02

    Please Execute the below queries to fix this problem:

    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 
    
    0 讨论(0)
  • 2020-11-29 02:04

    Check out sp_configure /RECONFIGURE...

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

    See these links for more info:

    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-provider-is-used-to-run-in-apartment-mode/

    0 讨论(0)
  • 2020-11-29 02:11

    I have MS Sql server 2012, and Office 2013. This seems to be very finicky, so you may have to adjust to your particular versions.

    1. Download the Microsoft.ACE.OLEDB.12.0 for Windows, 64 bit version found here: https://www.microsoft.com/en-us/download/details.aspx?id=13255
    2. Install it on your server.
    3. Check the user running SQL Server and make sure that user has access to the temp directory C:\Windows\ServiceProfiles\LocalService\AppData\Local\Temp if it's a local service account or C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp if it's a network service account.
    4. Configure 'Ad Hoc Distributed Queries' and enable the Microsoft.ACE.OLEDB files like this:

    Here's the SP_CONFIGURE commands:

    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
    

    On newer SQL Server 2014 You had use 'DynamicParameters' instead of 'DynamicParam'

    EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
    

    Make sure you register msexcl40.dll like this:

    regsvr32 C:\Windows\SysWOW64\msexcl40.dll
    
    0 讨论(0)
提交回复
热议问题