首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

自动清理 MS SQL Server Table Collation 有关问题 转载

2012-07-22 
自动清理 MS SQL Server Table Collation 问题 转载?Cannot resolve the collation conflict between Lat

自动清理 MS SQL Server Table Collation 问题 转载

?

Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.

?

?

?

declare @CollationName varchar(500);

?? set @CollationName = 'SQL_Latin1_General_CP1_CI_AS'
?
?? create table #tmp (sqlStr varchar(max));

?? insert into #tmp

?? select? 'alter table [' + o.name + '] alter column [' + c.name + ']' +

?? (case c.system_type_id when 167 then ' varchar(' when 175 then ' char(' else ' nvarchar(' end)

? + convert(varchar,c.max_length) + ') collate ' + @CollationName

? from sys.columns c,

????? sys.objects o

?? where? c.object_id=o.object_id and o.type='U' and c.system_type_id in (167,175,231) and collation_name<>@CollationName

?? and c.name not in (???

? 15:???? select???? cc.COLUMN_NAME

????? from????

????????? INFORMATION_SCHEMA.TABLE_CONSTRAINTS pk ,

????????? INFORMATION_SCHEMA.KEY_COLUMN_USAGE cc

?????? where????

?????????? cc.TABLE_NAME = pk.TABLE_NAME

????????? and??? cc.CONSTRAINT_NAME = pk.CONSTRAINT_NAME)

???

?? while (exists (select * from #tmp))

?? begin

?????? declare @sqlStr varchar(max);

?????? select @sqlStr=(select top 1 sqlstr from #tmp);

?????? exec(@sqlStr)

?????? delete from #tmp where sqlStr=@sqlStr

?? end

???

?? drop table #tmp;

热点排行