是否可以创建一个脚本,将数据库中所有nvarchar列的排序规则设置为数据库排序规则? 我不小心覆盖了所有列的排序规则到错误的排序规则(一个工具毁了我的东西)并且需要创建一个修复它的脚本。
我知道我可以通过运行'SELECT DATABASEPROPERTYEX('[DBName]','Collation');'来获取数据库整理,并且我可以运行alter column命令,但必须有一个更简单的方法吗?
我很感谢你的帮助!
答案 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