Til at begynde med vil du have, at alle dine kolonner skal være nvarchar
. Det vil tage sig af dine opbevaringsproblemer. Hvad angår sortering og filtrering, så bliver sammenstillinger vigtige som du siger.
Afhængigt af hvad du laver med dataene og hvor mange kolonner du skal bruge til filtrering og sortering og hvordan du laver operationerne, er en måde at gøre det på med dynamisk sql. Du kan gøre sådan noget som
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
Det er ikke en god løsning, men det virker. Du kan også smide sorteringen efter et hvilket som helst felt i en visning, så som du nævnte, er det en mulighed. Noget som dette, og så kan du forespørge på det uden at skulle angive sorteringer.
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...
Så kan du bare vælge den rigtige visning til at bruge til forespørgsler.