Vb.net 连接到Advantage ADT文件时出现排序错误5175

Vb.net 连接到Advantage ADT文件时出现排序错误5175,vb.net,connection-string,advantage-database-server,Vb.net,Connection String,Advantage Database Server,我正在VB.NET中开发一个应用程序,它必须连接到TableAdvantage(ADT) 我使用以下连接字符串: DSN=kantechX;DataDirectory=C:\DB\Data;SERVER=NotTheServer; Compression=Never;DefaultType=Advantage;Rows=False; collation=SPANISH_VFP_CI_AS_1252;AdvantageLocking=ON;Locking=Record; MemoBlockSize

我正在VB.NET中开发一个应用程序,它必须连接到TableAdvantage(ADT)

我使用以下连接字符串:

DSN=kantechX;DataDirectory=C:\DB\Data;SERVER=NotTheServer;
Compression=Never;DefaultType=Advantage;Rows=False;
collation=SPANISH_VFP_CI_AS_1252;AdvantageLocking=ON;Locking=Record;
MemoBlockSize=64;MaxTableCloseCache=5;ServerTypes=1;
TrimTrailingSpaces=False;EncryptionType=RC4;FIPS=False
建立连接后,将生成以下错误:

错误7200:AQE错误:状态=HY000;NativeError=5175[iAnywhere Solutions][SQL Advantage][ASA]错误5175:创建索引文件时使用的排序规则序列与当前使用的排序规则序列不同。表名:卡

我们还使用Advantage Data Architect 1110尝试了连接,当打开表时,会显示此错误:

错误7200:AQE错误:状态=HY000;NativeError=5209[iAnywhere Solutions][SQL Advantage][ASA]错误5209:使用了不同的排序规则,这可能导致查询优化效果不佳。表排序:(无),排序索引:西班牙语_VFP_CI_AS_1252表名:Card

架构师要求重新索引表,当我们这样做时,它不会显示警报2,但当我们尝试从vb.net连接ODBC时,异常会保留第一条错误消息

我已经检查了adslocal.cfg文件,没有发现任何有用的东西

如何解决此问题?

您从何处获得“collation=”设置?ADS ODBC驱动程序不接受这个选项

如果有“Language=”设置,您可能想试试

语言=OEM | ANSI |命名排序规则

如果提供了此设置,它将覆盖字符集设置。它可以 用于指定动态排序规则之一,例如 用于Visual FoxPro兼容性的常规_VFP_CI_AS_1252。这些 排序规则可以与Advantage ADT表和Visual FoxPro一起使用 (VFP)表格


我终于可以解决这个问题,这要归功于Jens链接和我在google上发现的其他信息

步骤如下:

  • 备份文件(以防万一)

  • 在机器中安装Advantage Architect,它们是要连接的ADT表

  • 下载并安装.NET数据提供程序(保留语言[Current language]和编码[USA]的默认设置),在那里我们有针对.NET的解决方案

  • 在有.NET解决方案的机器上下载并安装Advantage ODBC驱动程序(保留语言[Current language]和编码[USA]的默认设置)。       4.1尝试安装32位版本或64位版本,尽管我的系统是64位的,但我必须安装32位版本才能正常工作

  • 打开Architect并创建到现有表的新连接(ADT文件)

  • 在Architect中,双击打开表 6.1将出现一个警报,指示该表是用不同的语言编码的,如果您想更改连接参数(永久、仅此一次或忽略),我们称其为要永久更改(如果未永久选择,我们无法执行以下步骤) 6.2这里发生了两件事之一: -它显示一个警报,指示表的索引位于另一个排序规则和建议的重新索引中(这正是需要执行的操作) -表示该表正在使用中,无法打开,在这种情况下,您必须将该文件复制到不同的位置,并对其重复步骤5和6,然后覆盖被阻止的文件

  • 为了安全起见,我们将执行一个允许多个排序索引执行过程sp_AllowMultipleCollations(“”,true)的命令,第一个参数为空,“”表示应用于所有编码,而不是一个特别的“西班牙语”vfp_ci_as_1252“,第二个参数true表示自由限制。 7.1要运行此命令,请在架构师的菜单中查找使用SQL运行或创建手动查询的选项

  • 打开解决方案所在计算机的Windows ODBC连接,使用ODBC Stream Advantage conecction创建新连接ADT表,默认语言为ANSI,更改分级警报步骤6.1,指定本地服务器的配置
  • 在.NET中,我们使用连接字符串创建一个新的ODBC连接,指定在Windows中使用创建的ODBC的位置以及步骤6.1中的语言
  • DSN=[ODBC在Windows中创建];DataDirectory=[ADT文件的路径];服务器=非服务器;压缩=; 默认类型=优势;行=假;语言=西班牙语VFP CI_AS_1252; 优势锁定=打开;锁定=记录;内存块大小=64;MaxTableCloseCache=5;服务器类型=1; TrimTrailingSpaces=False;EncryptionType=RC4;DDPassword=kantech; FIPS=假;TLSCiphers=AES128-SHA:AES256-SHA:RC4-MD5

      9.1 if when You run the application doesnt allow use odbc for any reason maybe you you must add the advantage DLL in the solution references (Right click in the solution folder > add references > search in the COM for Advantage) .
    

    嗨,Jens,我在google上搜索时发现了排序规则设置,我在连接字符串中使用了它,没有任何提示表明它无效(我也使用了排序规则索引),我也使用了语言设置,正如您所说,但不起作用。