Как предотвратить Ckecksum () от генерации повторяющихся значений на сервере SQL - PullRequest
1 голос
/ 28 июля 2011

Как известно, существует вероятная вероятность того, что контрольная сумма генерирует дублирующиеся значения, и я полагаю, что нужно найти подход, который не позволяет контрольной сумме генерировать повторяющиеся значения ...

Ответы [ 2 ]

2 голосов
/ 28 июля 2011

Вы не можете.CHECKSUM никогда не может быть гарантированно уникальным.

MSDN для CHECKSUM говорит, что вместо него нужно использовать HASHBYTES , что имеет гораздо меньшую вероятность дублирования.

Однако, любойФункция хеширования не может гарантировать 100%, что у вас не будет дубликатов.если вы хотите "без дубликатов", то не стоит хешировать ...

0 голосов
/ 28 июля 2011

Рассмотрите возможность использования HashBytes

С MSDN :

Когда алгоритм хеширования MD5 указан, вероятность того, что HashBytes возвращает тот же результат для два разных входа намного ниже, чем у CHECKSUM.

Пример:

DECLARE @HashThis nvarchar(4000);
SELECT @HashThis = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf');
SELECT HashBytes('SHA1', @HashThis);
GO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...