Работал над этим параллельно, но похоже, что это расширение некоторых других уже предложенных идей ... Вы должны быть в состоянии создать индексированное представление, используя CHECKSUM, чтобы справиться с этим.
Как пример:
CREATE TABLE dbo.Test_Unique_Limit (
string_1 NVARCHAR(255) NOT NULL,
string_2 NVARCHAR(255) NOT NULL,
string_3 NVARCHAR(255) NOT NULL )
GO
CREATE VIEW dbo.Test_Unique_Limit_View
WITH SCHEMABINDING
AS
SELECT string_1, string_2, string_3, CHECKSUM(string_1, string_2, string_3) AS CHKSUM
FROM dbo.Test_Unique_Limit
GO
CREATE UNIQUE CLUSTERED INDEX Test_Unique_Limit_IDX ON dbo.Test_Unique_Limit_View (CHKSUM)
GO
Я не использовал этот метод в производстве, поэтому я не могу поручиться ни за его производительность, ни за полную точность. Вам нужно будет провести собственное тестирование там.
Одна вещь, которую я укажу, хотя ... тот факт, что вы сталкиваетесь с этой проблемой, заставит вас сделать шаг назад и подумать, действительно ли сама модель так хороша, как должна быть. Уникальный индекс для столбцов, который вы описали, кажется немного странным.
Удачи!