从 .NET 应用程序建立到本地 Pervasive DB 的 ODBC DSN-Less 连接

Establish an ODBC DSN-Less Connection to local Pervasive DB from .NET application

我们正在开发一个 .NET 应用程序,该应用程序将安装在我们安装了 Sage 50 (Peachtree) 会计软件的客户计算机上。我们的应用程序将使用 Pervasive ODBC 驱动程序连接到 Sage。 通过配置 DSN,我们能够使用 ODBC 驱动程序连接到 Sage DB。 不幸的是,这需要我们的应用程序用户采取许多步骤来配置连接,我们希望避免这种情况。

我们希望使用 ODBC 连接到 Sage 数据库,但避免设置 DSN。 我们已尝试使用以下连接字符串从我们的 .NET 应用程序连接到数据库:

Driver={Pervasive ODBC Engine Interface};dbq=STONEARBORLANDSCAPING;uid=XXXXXXXXX;pwd=XXXXXXXX;

尝试连接时,触发了以下错误: “错误 [HY000] [普遍][ODBC 客户端接口][LNA][普遍][ODBC 引擎接口][数据记录管理器]指定的文件名无效(检索错误 11)\r\nERROR [HY000] [普遍] [ODBC 客户端接口][LNA][普遍][ODBC 引擎接口][数据记录管理器]

我们也试过弄乱数据库名称,它确实指示无效的数据库名称,因此建立了连接。我相信我们在指向磁盘上某个位置的连接字符串中缺少一个参数。 在网上查找并尝试了各种选项后,我无法让它工作并且总是返回 "The specified filename is invalid(Btrieve Error 11)" 错误。

如果有任何提示/指导,我们将不胜感激!

Btrieve 错误 11 与连接字符串无关。它与 DDF 以及它们如何引用数据文件有关。我认为即使通过 Pervasive Control Center 访问数据库也会出现错误 11。
如果您在连接时收到错误 11 而不是在访问特定 table 时收到错误 11,则可能是数据库无效,您需要从 Sage 获取新的 DDF。如果您使用 Btrieve 函数执行器打开 FILE.DDF,您可以读取记录,我的猜测是系统 table 之一(table 名称以 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         

尝试使用来自 Sage 的非样本公司进行连接时,使用相同的设置,连接成功。