Установите ODBC DSN-Less-соединение с локальной распространяемой БД из приложения .NET - PullRequest
0 голосов
/ 30 декабря 2018

Мы разрабатываем приложение .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] [Pervasive] [ODBC ClientИнтерфейс] [LNA] [Распространение] [Интерфейс механизма ODBC] [Диспетчер записи данных] Указанное недопустимое имя файла (ошибка Btrieve 11) \ r \ nERROR [HY000] [Распространение] [Интерфейс клиента ODBC] [LNA] [Распространение] [Интерфейс ODBC Engine] [Диспетчер записи данных]

Мы также пытались связываться с именем БД, и оно указывало на недопустимое имя БД, поэтому было установлено соединение. Я считаю, что в параметре отсутствует параметрСтрока подключения, указывающая на местоположение на диске. После поиска в Интернете и пробуя различные варианты, я не мог заставить его работать и всегда возвращался к ошибке «Указанное имя файла недействительно (ошибка Btrieve 11)».

Буду признателен за любой совет / направление следовать!

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

При попытке подключиться с использованием не являющейся образцом компании из Sage, используя те же настройки, соединение работало.

0 голосов
/ 30 декабря 2018

Ошибка Btrieve 11 не связана со строкой подключения.Это связано с DDF и тем, как они ссылаются на файлы данных.Я думаю, вы получите ошибку 11 даже при доступе к базе данных через Pervasive Control Center.
Если вы получаете ошибку 11 при подключении, а не при доступе к определенной таблице, это, вероятно, неверная база данных, и вам нужно получить новуюDDFs от 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         
...