Finally, after several unsuccessful attempts to get SQL Server to "talk" to the Access database - either as a Linked Server in SSMS or through OPENROWSET() in T-SQL - I found this blog post suggesting the following three (3) offers.
Tweak # 1: OLE DB Provider Settings
The OLE DB provider for ACE (or Jet) must have the Dynamic option and Allow inprocess options. In SSMS, open
Server Objects> Linked Servers> Providers
right-click "Microsoft.ACE.OLEDB.12.0" (or "Microsoft.Jet.OLEDB.4.0"), select "Properties" and make sure that these options are selected:

Tweak # 2: Temp folder permissions
This is what pounded me.
Apparently, SQL Server should write information to a temporary file when executing an OLE DB query against an Access database. Because SQL Server runs as a service, it uses the% TEMP% folder of the account under which the service runs.
If the SQL Server service is running under the built-in Network Service account, then the temporary folder
% SystemRoot% \ ServiceProfiles \ NetworkService \ AppData \ Local \ Temp
and if it is running under the built-in Local Service account, then the temporary folder
% SystemRoot% \ ServiceProfiles \ LocalService \ AppData \ Local \ Temp
My problem was that SSMS was running under my account (not NETWORK SERVICE), so I had read-only access to the Temp folder

Once I granted myself Modify permissions for this folder

and activate OPENROWSET requests as described in another question here , namely ...
EXEC sp_configure 'show advanced options', 1 RECONFIGURE GO EXEC sp_configure 'ad hoc distributed queries', 1 RECONFIGURE GO
... my request worked fine:

Tweak # 3: memory_to_reserve
Although I did not need to use it in my case, the aforementioned blog also claims that setting the startup option β-g memory_to_reserveβ to the SQL Server service can also help avoid such errors. For this:
- start SQL Server Configuration Manager
- right-click the SQL Server service (SQL Server Services tab) and select Properties
- on the Advanced tab, add
-g512; in the "Launch Settings" setting - restart the SQL Server service
For more information on the "memory_to_reserve" parameter, see the MSDN article here .