T-SQL: How do I create a unique key that is case sensitive?

Solution 1:

This will change the column to be case sensitive. I don't think there's any change to your constraint...

ALTER TABLE mytable 
ALTER COLUMN mycolumn VARCHAR(10) 
COLLATE SQL_Latin1_General_CP1_CS_AS

Any selects or joins on this column will become case sensitive as a result of this operation.

Solution 2:

You can only set the case-sensitivity of the data in the database (smallest granularity of column). You can't set case-sensitivity of an index - that would be equivalent to being able to index on an expression, which is possible in some databases but not Sql Server.