• For terminology's sake so we're speaking the same language:

    ANSI = VARCHAR/CHAR

    Unicode = NVARCHAR/NCHAR

    In SQL Server, Unicode = UCS-2

    Still not clear if all your columns are Unicode or whether you have some ANSI columns. If all Unicode then you can stop using the ASCII() function and stick with the UNICODE() function.

    SQL Server will not munge data inserted into Unicode columns. If you're seeing ? marks in a Unicode column then those characters were munged prior to entering the table.

    There are no special teachers of virtue, because virtue is taught by the whole community.
    --Plato