Michael's Space

Technology changes the world, serves the people.
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
如何解决“Selected Collating Sequence Not Supported”问题
Michael 2006年9月2日

在Microsoft Access 97中文版下创建的数据库,放在Windows XP英文版下,执行SELECT语句时出现标题所示的错误。
执行SELECT语句的客户程序是采用ADO访问数据库的。
为了解决这个问题,必须要首先了解数据库的一个属性,它叫“数据库排序次序”(Database Sorting Order)。在Microsoft Access的“工具”->“选项”->“常规”->“新建数据库排序次序”提供了该属性的设置,在英文版Access中为"Tools"->"Options"->"General"->"New Database Sort Order"。注意:必须要新建或者打开一个数据库才能够设置这个属性。

那么这个"Collating Sequence"到底是个什么东西,为什么会出现"collating sequence not supported"错误呢?

"Collating Sequence"实际上是个用于字符排序的序列,我们可以把它理解为一个表,给定一个字符,通过这个表可以查找到这个字符的序列号(范围从00-FF),继而通过这个序列号,我们可以比较两个字符在数据库中的前后顺序。所以,一个数字的排序总是比字母A-Z低,这在不同的"Collating Sequence"中可能为真也可能为假。当然,一个数字(x'30'-x'39')的代码值(Code Point)总是比字母A-Z(x'41'-x'5A')低,这是永远正确的。
关于"Collating Sequence"的概念可以参考以下链接:
http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/c0006812.htm

Microsoft Jet数据库引擎用到了四个Collating Sequence表,点击以下链接获得详细信息:
http://support.microsoft.com/default.aspx?scid=kb;en-us;129719

那么该如何解决这个问题呢?

有两种方案:

第一种:更新数据库
设置“新建数据库排序次序”属性为"General",然后新建一个新的数据库,并导入老数据库的所有表。
该属性的默认值是当前操作系统的默认语言版本(注意不是操作系统的语言版本)。

第二种:更新操作系统
既然操作系统不支持该数据库的Collating Sequence,就安装一个多语言支持,当然操作系统必须支持你创建数据库时使用的语言,比如OS需要支持中文字符集。
可以参考以下文章:
http://support.microsoft.com/default.aspx?scid=KB;en-us;q202150

[全文完]

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理