Установите ODBC DSN-Less-соединение с локальной распространяемой БД из приложения.NET
Мы разрабатываем приложение.NET, которое будет установлено на клиентском компьютере, на котором установлено бухгалтерское программное обеспечение Sage 50 (Peachtree). Наше приложение будет подключаться к Sage с помощью драйвера Pervasive ODBC. Мы смогли подключиться к Sage DB с помощью драйвера ODBC, настроив DSN. К сожалению, это требует, чтобы пользователь нашего приложения предпринял много шагов для настройки соединения, и мы хотели бы избежать этого.
Мы хотим подключиться к Sage DB, используя ODBC, но избегая настройки DSN. Мы попытались подключиться к БД с помощью приведенной ниже строки подключения из нашего приложения.NET:
Driver={Pervasive ODBC Engine Interface};dbq=STONEARBORLANDSCAPING;uid=XXXXXXXXX;pwd=XXXXXXXX;
При попытке подключения возникает следующая ошибка: "ОШИБКА [HY000] [Распространение] [Интерфейс клиента ODBC][LNA][Распространение] [Интерфейс механизма ODBC] [Диспетчер записи данных] Указанное имя файла недопустимо (Ошибка Btrieve 11)\r\nERROR [HY000] [Распространение] [Интерфейс клиента ODBC][LNA][Распространение] [Интерфейс механизма ODBC] [Диспетчер записи данных]
Мы также пытались связываться с именем БД, и оно указывало на недопустимое имя БД, поэтому было установлено соединение. Я считаю, что в строке подключения отсутствует параметр, указывающий на местоположение на диске. Посмотрев в Интернете и попробовав различные варианты, я не смог заставить его работать и всегда возвращался к ошибке "Указанное имя файла недействительно (ошибка Btrieve 11)".
Буду признателен за любой совет / направление следовать!
2 ответа
При попытке подключиться с помощью не являющейся примером компании из Sage, используя те же настройки, соединение работало.
Ошибка Btrieve 11 не связана со строкой соединения. Это связано с DDF и тем, как они ссылаются на файлы данных. Я думаю, что вы получите ошибку 11 даже при доступе к базе данных через Pervasive Control Center.
Если вы получаете сообщение об ошибке 11 при подключении, а не при доступе к определенной таблице, это, вероятно, неверная база данных, и вам нужно получить новые DDF от Sage. Если вы откроете FILE.DDF с помощью Btrieve Function Executor, вы сможете прочитать записи, и я предполагаю, что одна из системных таблиц (имя таблицы начинается с X$) отсутствует или неверна. Должно быть не менее 10 записей:
Xf$Name Xf$Loc
==================== ================================================================
X$File file.ddf
X$Field field.ddf
X$Index index.ddf
X$View view.ddf
X$Proc proc.ddf
X$Relate relate.ddf
X$Trigger trigger.ddf
X$Attrib attrib.ddf
X$Occurs occurs.ddf
X$Variant variant.ddf