首页 > 代码库 > 批量更改数据库COLLATION
批量更改数据库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)
旧系统:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。