细节:2个数据库:sybase版本15和sybase版本16每个1个表(相同):具有列id,角色名和描述的AuthRole尝试了jTDS和jconn驱动程序查询:
选择t1 ….
如果在ASE 15上两个查询都工作 - 使用“rolename”和“roleName” - 这意味着此数据库中的排序顺序不区分大小写。
如果在ASE 16上“rolename”与“roleName”不同 - 这意味着此数据库中的排序顺序区分大小写。
您可以通过查询来检查:
if "a" = "A" print "Case insensitive" else print "Case sensitive"
此设置是为整个服务器(以及服务器包含的所有数据库)设置和静态的,但可以更改。当然,更改排序顺序是一个耗时的过程,因为它需要根据字符类型重建所有索引。
您可以检查服务器排序顺序设置:
exec sp_configure 'sortorder id'
在数据库服务器启动时,ASE错误日志中应显示有关排序顺序的信息:
00:0002:00000:00002:2017/07/04 16:49:26.35 server ASE's default unicode sort order is 'binary'. 00:0002:00000:00002:2017/07/04 16:49:26.35 server ASE's default sort order is: 00:0002:00000:00002:2017/07/04 16:49:26.35 server 'bin_iso_1' (ID = 50) 00:0002:00000:00002:2017/07/04 16:49:26.35 server on top of default character set: 00:0002:00000:00002:2017/07/04 16:49:26.35 server 'iso_1' (ID = 1).
在我的例子中,排序顺序是二进制 - 这是区分大小写的。
有关如何更改服务器的排序顺序的信息在 ASE手册 。 Basicaly更改您需要的排序顺序:
听起来像排序顺序的问题,例如:
您应该能够通过运行来确认上述内容 sp_helpsort 。
sp_helpsort
在ASE中,case(in)灵敏度适用于数据和标识符(例如,表/列名称)。
为了使ASE 16像ASE 15一样运行,DBA需要更改ASE 16数据服务器中的排序顺序(我建议他们在验证字符集时也是如此)。
请记住,更改排序顺序(和/或字符集)是一个dataserver范围的配置,并且需要(至少)重建所有索引并重新运行 update index statistics 。 [有关更多信息,DBA应参考ASE System Administration Guide ,章节 Configuring Character Sets, Sort Orders and Languages ]
update index statistics
System Administration Guide
Configuring Character Sets, Sort Orders and Languages
脱离我的头顶:
在早期版本的Sybase ASE中,您必须在服务器安装时仔细设置区分大小写。安装程序默认为区分大小写。也许安装了ASE15的管理员注意到了这一点(并将默认设置更改为不区分大小写),而安装ASE16的管理员则没有。
是的,case-Sensitivity是Server的一个属性。您可以稍后更改它 sp_configure 或者ALTER DATABASE,或者两者兼而有(我不记得了,我没有时间查找它)。您还可以使用图形管理工具更改服务器默认排序顺序。
sp_configure
无论如何只有数据库 创建之后 配置更改将受到影响。令人困惑的是,较旧的数据库仍然会区分大小写,或者会发出大量警告。这是因为在旧表中,所有主键(PK)都实现为索引,假设区分大小写,并且安装程序或配置向导无法更改PK和PK索引。 实际上,您必须删除并重新创建索引并运行 dbcc something (再一次,我不记得了)。
dbcc something
对于小型数据库,可以完成此删除和重新创建的索引(使用脚本或数据库重新设计工具来执行此操作)。对于较大的数据库,这可能需要一些时间
也许它对ASE16来说是不同的 - 检查docuemntation