0

I'm trying to run queries on a collection of 2000 version .mdb Access databases. I'm able to successfully query and receive data. However, on completion I get an access violation error (0xc0000005). In debug mode the program is stopped, but in release it simply hangs.

In a new .net 6 console app, this throws the same error:

using System.Data.OleDb;

string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source = D:\db\test.mdb; Persist Security Info=False;";

using (OleDbConnection connection = new OleDbConnection(connectionString))
{
    try
    {
        connection.Open();
    }
    catch(Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
    
}

No exception is caught.

Output from Debug:

'AccessViolationTest.exe' (CoreCLR: DefaultDomain): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Private.CoreLib.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'D:\OneDrive\Code\scratch\AccessViolationTest\AccessViolationTest\bin\Debug\net6.0\AccessViolationTest.dll'. Symbols loaded.
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Runtime.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'c:\program files\microsoft visual studio\2022\community\common7\ide\commonextensions\microsoft\hotreload\Microsoft.Extensions.DotNetDeltaApplier.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.IO.Pipes.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Linq.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Collections.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Console.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Threading.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Threading.Overlapped.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Security.AccessControl.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Security.Principal.Windows.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Runtime.InteropServices.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Security.Claims.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\Microsoft.Win32.Primitives.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Runtime.Loader.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'D:\OneDrive\Code\scratch\AccessViolationTest\AccessViolationTest\bin\Debug\net6.0\runtimes\win\lib\net6.0\System.Data.OleDb.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Data.Common.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.ComponentModel.Primitives.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Transactions.Local.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Collections.Concurrent.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Diagnostics.TraceSource.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'D:\OneDrive\Code\scratch\AccessViolationTest\AccessViolationTest\bin\Debug\net6.0\runtimes\win\lib\net6.0\System.Diagnostics.PerformanceCounter.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.ComponentModel.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Threading.Thread.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Diagnostics.Tracing.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\Microsoft.Win32.Registry.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Runtime.InteropServices.RuntimeInformation.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Threading.ThreadPool.dll'. 
'AccessViolationTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.7\System.Diagnostics.FileVersionInfo.dll'. 
The program '[11636] AccessViolationTest.exe' has exited with code 3221225477 (0xc0000005) 'Access violation'.

  • Try using Jet instead. See [Access 2000 connection strings](https://www.connectionstrings.com/access-2000/) - Jet is 32-bit only, so ensure that your program runs as 32-bit. – Tu deschizi eu inchid Jul 18 '22 at 15:33
  • This solves it. Thank you very much. Any idea why Ace didn't work? It seems to be the recommended way to go. As an addendum, do you know of a way to adapt Jet to work on 64bit? I looked around and everything I found says 'use Ace, Jet has been deprecated' – bmeenehan Jul 18 '22 at 15:57
  • The following may be helpful: https://stackoverflow.com/questions/69137918/accessviolationexception-thrown-by-oledbconnection-open , https://stackoverflow.com/questions/70040215/oledbdataadapter-fill-and-oledbdatareader-takes-3-5-minutes-to-fill/70209998#70209998 , https://learn.microsoft.com/en-us/office/troubleshoot/access/cannot-use-odbc-or-oledb#resolution and NuGet package `Microsoft.Office.Interop.Access` – Tu deschizi eu inchid Jul 18 '22 at 16:25
  • Thank you very much once again I'll experiment with what you've given me here and update my answer appropriately if I can get it to work – bmeenehan Jul 18 '22 at 18:27

1 Answers1

0

As pointed out by user9938, the solution is to use Jet instead of Ace

Access 2000 connection strings

This requires running the project as 32-bit.