以前的库,SQL2000的,排序规则是Compatibility_198_804_30001,现在想给升级到2005,但是在2005中,这个排序规则可以使用,在转出脚本时会提示,找不到排序规则Compatibility_198_804_30001 想给换个排序规则,但是Compatibility_198_804_30001原来有个特性,他的字段数据是大小写敏感的,也就是说字段值'AA' <> 'Aa',而且他的所有字段名和表名是大小写不敏感的,也就是说select   COL1   from   TAB1=select   Col1   from   Tab1,原来程序的表名、字段名大小写混用非常严重。现在的排序规则找不到这个特性的 该怎么办呢?谁帮我出出主意 
--
转之前先换个排序,然后把脚本的排序全部替换为你需要的排序.

解决方案 »

  1.   

    1 新建一个2005的新排序规则的数据库和所有表2 把数据用DTS或者SSIS导过去,可以指定源和目标的排序规则.
      

  2.   

    转脚本不是目的,这个报错也可以不理他主要是想知道有没有第二个这样特性的排序规则
    或者有没有人知道Compatibility_198_804_30001的来历
    或者有没有人知道Compatibility_198_804_30001会不会以后不可用
      

  3.   

    mengmou 
    mengmou 
    等 级:
     发表于:2008-01-16 11:57:5814楼 得分:0 
    数据是否大小写敏感跟表的字段的排序规则有关,如果该字段没有外键引用,索引等对象,可以修改字段的排序规则 
    字段名,表名是否大小写敏感跟数据库的排序规则有关,如果该数据库中没有计算列等依赖数据库排序规则的对象,可以修改数据库的排序规则. 
     
    ----------------------------------
    我试过字段排序规则与数据库的排序规则不同的设置,但是还是有诸多不便:
    1、产生临时表不能不用COLLATE或者使用COLLATE Database_Default
    2、增加表必须制定字段排序规则总之以后如果不小心就会踩到地雷
      

  4.   

    CREATE DATABASE db
    COLLATE Compatibility_198_804_30001
    GOUSE DBCREATE TABLE dbo.tb(id int)
    GOALTER TABLE dbo.TB ADD col varchar(10)
    GOINSERT dbo.tb(col)
    VALUES('a')SELECT * FROM dbo.tb
    WHERE col = 'A'
    SELECT * FROM dbo.TB
    WHERE col = 'a'
    GO
      

  5.   

    不过我上面的测试是在 sql 2005 下进行的, 用的是楼主的排序规则
    确实实现了:
    数据区分大小写
    对象不区分大小写因为改表和查询, 无论大小写均可以
    但查询只有第二个查询出数据
      

  6.   

    转脚本不是目的,这个报错也可以不理他 主要是想知道有没有第二个这样特性的排序规则 
    或者有没有人知道Compatibility_198_804_30001的来历 
    或者有没有人知道Compatibility_198_804_30001会不会以后不可用 
      

  7.   

    老大,很不幸,Compatibility_打头的排序规则是sql server 7.0及其以前的版本的,到2000已经不支持了.
    http://support.microsoft.com/kb/270042
      

  8.   

    谢谢30楼基本查明Compatibility_198_804_30001的底细Compatibility   兼容排序规则
    198 排序次序 十进制数字 二进制顺序、用于 936(简体中文)字符集。
    804 区域设置 ID (LCID)  十六进制数字 0x804=2052 简体中文
    30001 Unicode 比较样式  十六进制数字 0x30001 = 196609 (例, 不区分重音敏感, 假名不区分,宽度不区分) 对应排序规则  Chinese_PRC_BIN可惜Chinese_PRC_BIN在数据上是一样的,在对象名上,也是大小写敏感的