Eu crio uma visão com um índice que ignora os nulos através da cláusula where... ou seja. se você inserir null na tabela, a exibição não se importará, mas se você inserir um valor não nulo, a exibição aplicará a restrição.
create view dbo.UniqueAssetTag with schemabinding
as
select asset_tag
from dbo.equipment
where asset_tag is not null
GO
create unique clustered index ix_UniqueAssetTag
on UniqueAssetTag(asset_tag)
GO
Então agora minha tabela de equipamentos tem uma coluna asset_tag que permite vários nulos, mas apenas valores não nulos exclusivos.
Observação:se estiver usando o mssql 2000, você precisará "SET ARITHABORT ON " imediatamente antes de qualquer inserção, atualização ou exclusão ser executada na tabela. Tenho certeza de que isso não é necessário no mssql 2005 e superior.