.NET Core и MS Access «миграция» соединения - PullRequest
0 голосов
/ 03 февраля 2019

Я использую .NET Core 2.1 в качестве веб-приложения и мне нужно настроить страницу для переноса старых .mdb Доступ к файлам в новой базе данных SQL Server.Это не единственная база данных Access .... это сотни баз данных владельцев.

У меня установлено: AccessDatabaseEngine_X64.exe

Установка этого nuget:

using System.Data.Odbc;

32/64-битные драйверы доступа перечислены в ODBC32 и ODBC64, но .NET Core64бит только из того, что я понимаю.

НО ... Я не могу обойти эту ошибку, которая выдает исключение на

connection.Open();

OdbcException: ОШИБКА [IM002] [Microsoft] [Диспетчер драйверов ODBC]имя источника не найдено и драйвер по умолчанию не указан

Мой код:

public MigrateAccessDb(List<string> Files)
{
    //string file = Files[0];
    string file = @"D:\test.mdb";
    string connectionString = "Driver={Microsoft Access Driver(*.mdb, *.accdb)}; Dbq=" + file;
    //string connectionString = String.Format("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = {0}; Persist Security Info = False; ", file);
    //string connectionString = String.Format("Provider = Microsoft.ACE.OLEDB.12.0; Data Source = {0}; Persist Security Info = False;", file);

    string queryString = "SELECT * FROM Configs";

    using (OdbcConnection connection = new OdbcConnection(connectionString))
    {
        OdbcCommand command = new OdbcCommand(queryString, connection);

        connection.Open();

Сделано простое приложение консоли ядра .net .. та же ошибка: enter image description here

Цикл по нескольким связямСтроки enter image description here

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

В строке подключения ODBC значимы пробелы.

Не найдено имя источника данных и не указан драйвер по умолчанию Ошибка возникает только в том случае, если у вас нет драйвера с совпадающим именеми соответствующая битность.

Правильная строка подключения ODBC для Access:

"Driver={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq="+ file;

Отсутствует пробел между Driver и (

Обратите внимание, что при установке32-разрядная и 64-разрядная версии ядра СУБД Access на самом деле не поддерживаются и могут привести к проблемам.Я знаю, что проблема с пространством, но в вашей точной настройке могут быть и другие.

0 голосов
/ 04 февраля 2019

Вы пробовали это?

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\myAccessFile.mdb;Persist Security Info=False;

Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...