O que você está procurando é de fato parte dos padrões ANSI SQL:92, SQL:1999 e SQL:2003, ou seja, uma restrição UNIQUE deve não permitir valores duplicados não NULL, mas aceitar vários valores NULL.
No mundo Microsoft do SQL Server, no entanto, um único NULL é permitido, mas vários NULLs não são ...
No SQL Server 2008 , você pode definir um índice filtrado exclusivo com base em um predicado que exclui NULLs:
CREATE UNIQUE NONCLUSTERED INDEX idx_yourcolumn_notnull
ON YourTable(yourcolumn)
WHERE yourcolumn IS NOT NULL;
Em versões anteriores, você pode recorrer a VIEWS com um predicado NOT NULL para impor a restrição.