Като за начало ще искате всичките ви колони да бъдат nvarchar
. Това ще се погрижи за вашите проблеми със съхранението. Що се отнася до сортирането и филтрирането, сортирането става важно, както казвате.
В зависимост от това какво правите с данните и колко колони трябва да използвате за филтриране и сортиране и как извършвате операциите, един от начините да го направите е с динамичен sql. Можете да направите нещо като
declare @collation sysname = 'Latin1_General_CI_AS'
declare @cmd nvarchar(max)
set @cmd = 'select * from person order by last_name collate ' + @collation
exec sp_executesql @cmd
Това не е страхотно решение, но работи. Можете също така да хвърлите сортирането след всяко поле в изглед, така че, както споменахте, това е опция. Нещо подобно и след това можете да го направите заявка, без да се налага да указвате сортиране.
create view v_Person_RU as
select first_name collate Cyrillic_General_CI_AI, last_name collate Cyrillic_General_CI_AI...
create view v_Person_AR as
select first_name collate Arabic_CI_AI, last_name collate Arabic_CI_AI...
След това можете просто да изберете правилния изглед, който да използвате за заявки.