The OLE DB provider “Microsoft.ACE.OLEDB.12.0” for linked server “(null)”

后端 未结 19 1720
灰色年华
灰色年华 2020-12-02 17:27

I\'m trying to run the following statement but am receiving the error messages just below. I have researched answers to no end and none have worked for me. I\'m running Of

相关标签:
19条回答
  • 2020-12-02 17:39

    This is my error code:

    OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "The Microsoft Access database engine could not find the object 'ByStore$'. Make sure the object exists and that you spell its name and the path name correctly. If 'ByStore$' is not a local object, check your network connection or contact the server administrator.".
    
    Msg 7350, Level 16, State 2, Procedure PeopleCounter_daily, Line 26
    
    Cannot get the column information from OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".
    

    My problem was the excel file was missing at the path. Just put the file with the correct sheet will do.

    0 讨论(0)
  • 2020-12-02 17:40

    In our case, it helped to add a parameter for SQL Server service:

    1. Go to Services.msc, select SQL Server Service and open Properties.
    2. Choose Startup Parameters and add new parameter –g512
    3. Restart SQL server service.
    0 讨论(0)
  • 2020-12-02 17:45

    I had the exact same error message, and tried the suggested solutions in this thread but without success.

    what solved the problem for me is opening the .xlsx file and saving it as .xls (excel 2003) file.

    maybe the file was corrupted or in a different format, and saving it again fixed it.

    0 讨论(0)
  • 2020-12-02 17:46

    I had the same issues even after running all those EXEC stored procedure commands that you see on every answer/blog, but when I ran SSMS as administrator, the problems went away. Since, I didn't want to do that, I opened Services, went to SQL Server (MyServer), right clicked, selected properties. On the Log On tab, "This account:" was selected with and listed my SQL Server account/password. I instead checked "Local System account" and ticked the "Allow service to interact with desktop". Then I stopped and started the service. Now, I can run the same query as the original poster mentions without running as administrator in SSMS. This probably worked because I am running SQL Server on my home desktop.

    I'd also like to point out that you can use GUI in SSMS to enable adhoc access (and many other options). In SSMS, go to Linked Servers>Providers, right click on the provider, and select properties. Then you can just check/uncheck the ones you want.

    0 讨论(0)
  • 2020-12-02 17:46

    For me, these two things helped on different occasions:

    1) If you've just installed the MS Access runtime, reboot the server. Bouncing the database instance isn't enough.

    2) As well as making sure the Excel file isn't open, check you haven't got Windows Explorer open with the preview pane switched on - that locks it too.

    0 讨论(0)
  • 2020-12-02 17:47
    Exec sp_configure 'show advanced options', 1;
    RECONFIGURE;
    GO
    
    Exec sp_configure 'Ad Hoc Distributed Queries', 1;
    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
    
    Insert into OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0','Data Source=C:\upload_test.xlsx;Extended Properties=Excel 12.0')...[Sheet1$]
    SELECT ColumnNames FROM Your_table -- Sheet Should be already Present along with headers
    
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 0;
    GO
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 0;
    GO
    
    Exec sp_configure 'Ad Hoc Distributed Queries', 0;
    RECONFIGURE;
    GO
    
    Exec sp_configure 'show advanced options', 0
    RECONFIGURE;
    GO
    
    0 讨论(0)
提交回复
热议问题