Как известно, существует вероятная вероятность того, что контрольная сумма генерирует дублирующиеся значения, и я полагаю, что нужно найти подход, который не позволяет контрольной сумме генерировать повторяющиеся значения ...
Вы не можете.CHECKSUM никогда не может быть гарантированно уникальным.
MSDN для CHECKSUM говорит, что вместо него нужно использовать HASHBYTES , что имеет гораздо меньшую вероятность дублирования.
Однако, любойФункция хеширования не может гарантировать 100%, что у вас не будет дубликатов.если вы хотите "без дубликатов", то не стоит хешировать ...
Рассмотрите возможность использования HashBytes
С MSDN :
Когда алгоритм хеширования MD5 указан, вероятность того, что HashBytes возвращает тот же результат для два разных входа намного ниже, чем у CHECKSUM.
Пример:
DECLARE @HashThis nvarchar(4000); SELECT @HashThis = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf'); SELECT HashBytes('SHA1', @HashThis); GO