T-SQL - 将Nvarchar列设置为DB排序规则

时间:2011-09-15 15:11:19

标签: tsql collation

是否可以创建一个脚本,将数据库中所有nvarchar列的排序规则设置为数据库排序规则? 我不小心覆盖了所有列的排序规则到错误的排序规则(一个工具毁了我的东西)并且需要创建一个修复它的脚本。

我知道我可以通过运行'SELECT DATABASEPROPERTYEX('[DBName]','Collat​​ion');'来获取数据库整理,并且我可以运行alter column命令,但必须有一个更简单的方法吗?

我很感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

information_schema.columns的帮助下生成所需的SQL:

declare @collation varchar(50)

set @collation = 'YOUR_EXPECTED_COLLATION_NAME'

select 
    'ALTER TABLE [' + table_schema + '].[' + table_name + '] ALTER COLUMN [' + column_name + '] ' + data_type + '(' + convert(varchar, character_maximum_length) + ') COLLATE ' + @collation
from 
    information_schema.columns 
where 
    data_type in ('varchar', 'char', 'nvarchar', 'nchar')
    and collation_name <> @collation
相关问题