Я собрал скрипт, который должен сделать достаточно приличную работу (надеюсь). Запустите скрипт в соответствующей базе данных с результатами в виде текста. Затем скопируйте и вставьте вывод в окно скрипта, чтобы изменить параметры сортировки каждого столбца:
declare @NewCollationName sysname
set @NewCollationName = 'Latin1_General_CS_AS'
select
'ALTER TABLE ' + QUOTENAME(SCHEMA_NAME(st.schema_id)) + '.' + QUOTENAME(st.name) +
' ALTER COLUMN ' + QUOTENAME(sc.name) + ' ' + styp.name + '(' +
CASE WHEN sc.max_length = -1 THEN 'max' ELSE CONVERT(varchar(10),sc.max_length) END +
') collate ' + @NewCollationName + '
go
'
from
sys.columns sc
inner join
sys.tables st
on
sc.object_id = st.object_id
inner join
sys.types styp
on
sc.user_type_id = styp.user_type_id
where
sc.collation_name is not null and
OBJECTPROPERTY(st.object_id,N'IsMSShipped')=0
Однако следует отметить, что сгенерированный сценарий не будет работать, если столбцы являются целью ограничений или объектом привязанного к схеме объекта (представления или функции).
В таких случаях вам придется написать сценарий зависимых объектов, удалить их из базы данных, затем запустить сценарий, сгенерированный сценарием выше, и, наконец, повторно добавить зависимые объекты.