zoukankan      html  css  js  c++  java
  • 批量更改数据库COLLATION

          企业内部有很多系统是繁体的,由于各方面的原因,公司目前正在实行简体化,但各系统中又有数据间的交换,所以系统只能一个一个的更改,以防同时出现过多的问题。由于原先数据库只能存储繁体,而原先已存在的数据则可以不必转换为简体,照用就可以了。我们新的数据库均采用Chinese_PRC_BIN collation, 所以我们直接把旧系统备份一份,然后恢复到新的服务器上,同时更改数据库的collation. 但是只更改了数据库的COLLATION还是不够的。要把数据库里面的表都同时更改了才可以。但我们的数据库有100多张表,而且后续的其它系统远比现在这个系统复杂的多。表的数量也大很多。所以我们需要找到一个方案可以批量更改的。经过一翻努力及测试,终于找到了解决的方法,特意写下来,看有没有相同需求的朋友。首先产生代码。再把得到的结果放到SQL查询器执行便可。

    select 'ALTER TABLE ' + quotename(TABLE_NAME) +  
    
           ' ALTER COLUMN ' + quotename(COLUMN_NAME) + ' ' + quotename(DATA_TYPE) +  
    
    CASE WHEN CHARACTER_MAXIMUM_LENGTH = -1 then '(max)' 
    
     WHEN DATA_TYPE in ('text','ntext') then '' 
    
     WHEN CHARACTER_MAXIMUM_LENGTH IS NOT NULL  
    
        THEN '('+(CONVERT(VARCHAR,CHARACTER_MAXIMUM_LENGTH)+')' )  
    
          ELSE isnull(CONVERT(VARCHAR,CHARACTER_MAXIMUM_LENGTH),' ') END  
    
          +' COLLATE Chinese_PRC_BIN ' + CASE IS_NULLABLE  
    
                    WHEN 'YES' THEN 'NULL' 
    
                    WHEN 'NO' THEN 'NOT NULL' 
    
                    END 
    
      from  INFORMATION_SCHEMA.COLUMNS,sys.all_objects o  
    
     where COLLATION_NAME='Chinese_Taiwan_Stroke_BIN' AND TABLE_NAME=o.name and o.type='U'
    
     order by quotename(TABLE_NAME) 

    旧系统:

  • 相关阅读:
    JavaScript关闭窗口的方法
    .NET 实现异步处理的集中方式
    c#调用系统资源大集合-3
    c#调用系统资源大集合-2
    android sqlite 操作使用
    android 适配的大小设置
    java.lang.IllegalStateException: Fragment already added:
    keydown 事件响应处理
    android 图表图形显示推荐 开源库
    android bitmap mutable
  • 原文地址:https://www.cnblogs.com/Geton/p/3781911.html
Copyright © 2011-2022 走看看